Diff for /loncom/interface/Attic/lonspreadsheet.pm between versions 1.84 and 1.88

version 1.84, 2002/04/11 13:35:23 version 1.88, 2002/04/29 21:06:30
Line 122  sub initsheet { Line 122  sub initsheet {
     $safeeval->permit("sort");      $safeeval->permit("sort");
     $safeeval->deny(":base_io");      $safeeval->deny(":base_io");
     $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');      $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');
       $safehole->wrap(\&send_msg,     $safeeval,"&send_msg");
       $safehole->wrap(\&send_crit_msg,$safeeval,"&send_crit_msg");
     my $code=<<'ENDDEFS';      my $code=<<'ENDDEFS';
 # ---------------------------------------------------- Inside of the safe space  # ---------------------------------------------------- Inside of the safe space
   
Line 740  sub expandnamed { Line 742  sub expandnamed {
     return 0;      return 0;
         }          }
     } else {      } else {
         return '$c{\''.$expression.'\'}';          # it is not a function, so it is a parameter name
           # We should do the following:
           #    1. Take the list of parameter names
           #    2. look through the list for ones that match the parameter we want
           #    3. If there are no collisions, return the one that matches
           #    4. If there is a collision, return 'bad parameter name error'
           my $returnvalue = '';
           my @matches = ();
           $#matches = -1;
           study $expression;
           foreach $parameter (keys(%c)) {
               push @matches,$parameter if ($parameter =~ /$expression/);
           }
           if ($#matches == 0) {
               $returnvalue = '$c{\''.$matches[0].'\'}';
           } else {
               $returnvalue =  "'bad parameter name : $expression'";
           }
           return $returnvalue;
     }      }
 }  }
   
Line 760  sub sett { Line 780  sub sett {
       if ($_=~/A(\d+)/) {        if ($_=~/A(\d+)/) {
  my $trow=$1;   my $trow=$1;
                 if ($trow) {                  if ($trow) {
                       # Get the name of this cell
     my $lb=$col.$trow;      my $lb=$col.$trow;
                       # Grab the template declaration
                     $t{$lb}=$f{'template_'.$col};                      $t{$lb}=$f{'template_'.$col};
                       # Replace '#' with the row number
                     $t{$lb}=~s/\#/$trow/g;                      $t{$lb}=~s/\#/$trow/g;
                       # Replace '....' with ','
                     $t{$lb}=~s/\.\.+/\,/g;                      $t{$lb}=~s/\.\.+/\,/g;
                       # Replace 'A0' with the value from 'A0'
                     $t{$lb}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;                      $t{$lb}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;
                       # Replace parameters
                     $t{$lb}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.&expandnamed($2)/ge;                      $t{$lb}=~s/(^|[^\"\'])\[([^\]]+)\]/$1.&expandnamed($2)/ge;
                 }                  }
       }        }
Line 787  sub sett { Line 813  sub sett {
             }              }
         }          }
     }      }
       # For some reason 'A0' gets special treatment...  This seems superfluous
       # but I imagine it is here for a reason.
     $t{'A0'}=$f{'A0'};      $t{'A0'}=$f{'A0'};
     $t{'A0'}=~s/\.\.+/\,/g;      $t{'A0'}=~s/\.\.+/\,/g;
     $t{'A0'}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;      $t{'A0'}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;
Line 1316  sub readsheet { Line 1344  sub readsheet {
      } elsif($fn=~/\/*\.spreadsheet$/) {       } elsif($fn=~/\/*\.spreadsheet$/) {
          my $sheetxml=&Apache::lonnet::getfile           my $sheetxml=&Apache::lonnet::getfile
              (&Apache::lonnet::filelocation('',$fn));               (&Apache::lonnet::filelocation('',$fn));
          print "<pre>$sheetxml</pre>";  
          if ($sheetxml == -1) {           if ($sheetxml == -1) {
              $sheetxml='<field row="0" col="A">"Error loading spreadsheet '               $sheetxml='<field row="0" col="A">"Error loading spreadsheet '
                  .$fn.'"</field>';                   .$fn.'"</field>';
          }           }
          %f=%{&parse_sheet(\$sheetxml)};           %f=%{&parse_sheet(\$sheetxml)};
          print "<pre>";  
          foreach (sort( keys(%f))) {  
              print "$_ = $f{$_}\n";  
          }  
          print "</pre>";  
      } else {       } else {
          my $sheet='';           my $sheet='';
          my %tmphash = &Apache::lonnet::dump($fn,$cdom,$cnum);           my %tmphash = &Apache::lonnet::dump($fn,$cdom,$cnum);
Line 2425  $tmpdir=$r->dir_config('lonDaemons').'/t Line 2447  $tmpdir=$r->dir_config('lonDaemons').'/t
   
     function celledit(cn,cf) {      function celledit(cn,cf) {
         var cnf=prompt(cn,cf);          var cnf=prompt(cn,cf);
  if (cnf!=null) {          if (cnf!=null) {
     document.sheet.unewfield.value=cn;              document.sheet.unewfield.value=cn;
             document.sheet.unewformula.value=cnf;              document.sheet.unewformula.value=cnf;
             document.sheet.submit();              document.sheet.submit();
         }          }
Line 2654  ENDSCRIPT Line 2676  ENDSCRIPT
        }         }
     }      }
     $r->print('>');      $r->print('>');
   
     if (&gettype($asheet) eq 'classcalc') {      if (&gettype($asheet) eq 'classcalc') {
        $r->print(         $r->print(
    ' Output CSV format: <input type=checkbox name=showcsv onClick="submit()"');     ' Output CSV format: <input type=checkbox name=showcsv onClick="submit()"');

Removed from v.1.84  
changed lines
  Added in v.1.88


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