Diff for /loncom/interface/Attic/lonspreadsheet.pm between versions 1.6 and 1.7

version 1.6, 2000/12/06 14:50:47 version 1.7, 2000/12/06 23:23:38
Line 10  use Safe; Line 10  use Safe;
 use Safe::Hole;  use Safe::Hole;
 use Opcode;  use Opcode;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common :http);
 use HTML::TokeParser;  use HTML::TokeParser;
 use GDBM_File;  use GDBM_File;
   
Line 48  $filename=''; Line 48  $filename='';
 sub mask {  sub mask {
     my ($lower,$upper)=@_;      my ($lower,$upper)=@_;
   
     $lower=~/([A-Z]|\*)(\d+|\*)/;      $lower=~/([A-Za-z]|\*)(\d+|\*)/;
     my $la=$1;      my $la=$1;
     my $ld=$2;      my $ld=$2;
   
     $upper=~/([A-Z]|\*)(\d+|\*)/;      $upper=~/([A-Za-z]|\*)(\d+|\*)/;
     my $ua=$1;      my $ua=$1;
     my $ud=$2;      my $ud=$2;
     my $alpha='';      my $alpha='';
     my $num='';      my $num='';
   
     if (($la eq '*') || ($ua eq '*')) {      if (($la eq '*') || ($ua eq '*')) {
        $alpha='[A-Z]';         $alpha='[A-Za-z]';
     } else {      } else {
        $alpha='['.$la.'-'.$ua.']';         if (($la=~/[A-Z]/) && ($ua=~/[A-Z]/) ||
              ($la=~/[a-z]/) && ($ua=~/[a-z]/)) {
             $alpha='['.$la.'-'.$ua.']';
          } else {
             $alpha='['.$la.'-Za-'.$ua.']';
          }
     }         }   
   
     if (($ld eq '*') || ($ud eq '*')) {      if (($ld eq '*') || ($ud eq '*')) {
Line 83  sub mask { Line 88  sub mask {
        } else {         } else {
            my @lda=($ld=~m/\d/g);             my @lda=($ld=~m/\d/g);
            my @uda=($ud=~m/\d/g);             my @uda=($ud=~m/\d/g);
            my $i; $j=0;             my $i; $j=0; $notdone=1;
            for ($i=0;$i<=$#lda;$i++) {             for ($i=0;($i<=$#lda)&&($notdone);$i++) {
                if ($lda[$i]==$uda[$i]) {                 if ($lda[$i]==$uda[$i]) {
    $num.=$lda[$i];     $num.=$lda[$i];
                    $j=$i;                     $j=$i;
                  } else {
                      $notdone=0;
                }                 }
            }             }
            if ($j<$#lda-1) {             if ($j<$#lda-1) {
Line 105  sub mask { Line 112  sub mask {
                }                 }
                $num.=')';                 $num.=')';
            } else {             } else {
                $num.='['.$lda[$#lda].'-'.$uda[$#uda].']';                 if ($lda[$#lda]!=$uda[$#uda]) {
                     $num.='['.$lda[$#lda].'-'.$uda[$#uda].']';
          }
            }             }
        }         }
     }      }
Line 242  sub sett { Line 251  sub sett {
                 }                  }
             } else {              } else {
        $t{$_}=$f{$_};         $t{$_}=$f{$_};
                $t{$_}=~s/\.+/\,/g;                 $t{$_}=~s/\.\.+/\,/g;
                $t{$_}=~s/(^|[^\"\'])([A-Z]\d+)/$1\$v\{\'$2\'\}/g;                 $t{$_}=~s/(^|[^\"\'])([A-Za-z]\d+)/$1\$v\{\'$2\'\}/g;
             }              }
         }          }
     } keys %f;      } keys %f;
Line 287  sub outrow { Line 296  sub outrow {
         $fm=~s/[\'\"]/\&\#34;/g;          $fm=~s/[\'\"]/\&\#34;/g;
         $cols[$#cols+1]="'$_$n','$fm'".'___eq___'.$v{$_.$n};          $cols[$#cols+1]="'$_$n','$fm'".'___eq___'.$v{$_.$n};
     } ('A','B','C','D','E','F','G','H','I','J','K','L','M',      } ('A','B','C','D','E','F','G','H','I','J','K','L','M',
        'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');         'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
          'a','b','c','d','e','f','g','h','i','j','k','l','m',
          'n','o','p','q','r','s','t','u','v','w','x','y','z');
     return @cols;      return @cols;
 }  }
   
Line 416  sub outsheet { Line 427  sub outsheet {
     map {      map {
         $tabledata.="<td><b><font size=+1>$_</font></b></td>";          $tabledata.="<td><b><font size=+1>$_</font></b></td>";
     } ('A<br>Import','B','C','D','E','F','G','H','I','J','K','L','M',      } ('A<br>Import','B','C','D','E','F','G','H','I','J','K','L','M',
        'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');         'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
          'a','b','c','d','e','f','g','h','i','j','k','l','m',
          'n','o','p','q','r','s','t','u','v','w','x','y','z');
     $tabledata.='</tr>';      $tabledata.='</tr>';
     my $row;      my $row;
     my $maxrow=&getmaxrow($safeeval);      my $maxrow=&getmaxrow($safeeval);
Line 614  sub rowaassess { Line 627  sub rowaassess {
   
   
 sub handler {  sub handler {
   
     my $r=shift;      my $r=shift;
   
   $r->content_type('text/html');     if ($r->header_only) {
   $r->send_http_header;        $r->content_type('text/html');
         $r->send_http_header;
         return OK;
      }
   
   # ----------------------------------------------------- Needs to be in a course
   
   $r->print('<html><head><title>LON-CAPA Spreadsheet</title></head>');    if (($ENV{'request.course.fn'}) || 
   $r->print('<body bgcolor="#FFFFFF">');        ($ENV{'request.state'} eq 'construct')) { 
    
       $r->content_type('text/html');
       $r->send_http_header;
   
       $r->print('<html><head><title>LON-CAPA Spreadsheet</title></head>');
       $r->print('<body bgcolor="#FFFFFF">');
     
     my $sheetone=initsheet();      my $sheetone=initsheet();
     &setformulas($sheetone,      &setformulas($sheetone,
    'B3' => 5, 'C4' => 6, 'C6' => 'B3+C4', 'C2' => 'C6+B5', 'B5'=>'&SUM("A*")',     'B3' => 5, 'C4' => 6, 'C6' => 'B3+C4', 'C2' => 'C6+B5', 'B5'=>'&SUM("A*")',
    'A1' => 'a1', 'A2'=>'a2', 'A3'=>'a3','A4'=>'a4','A5'=>'a5','A6'=>'a6');     'A1' => 'da1', 'A2'=>'da2', 'A3'=>'da3','A4'=>'da4','A5'=>'da5','A6'=>'da6',
      'a1' => '28.7', 'a2' => 'C4+a1','G1'=>'&SUM("*25")');
     &setrowlabels($sheetone,      &setrowlabels($sheetone,
    'a1'=>'A Points','a2'=>'B Points','a3'=>'C Points',     'da1'=>'A Points','da2'=>'B Points','da3'=>'C Points',
    'a4'=>'Percentage Correct','a5'=>'Bonus Points','a6'=>'Points Awarded');     'da4'=>'Percentage Correct','da5'=>'Bonus Points','da6'=>'Points Awarded');
     &setconstants($sheetone,      &setconstants($sheetone,
    'A1' => '3', 'A2'=>'4', 'A3'=>'0','A4'=>'76','A5'=>'1.5','A6'=>'6');     'A1' => '3', 'A2'=>'4', 'A3'=>'0','A4'=>'76','A5'=>'1.5','A6'=>'6');
         
Line 637  sub handler { Line 661  sub handler {
     &calcsheet($sheetone);      &calcsheet($sheetone);
     $r->print(&outsheet($sheetone));      $r->print(&outsheet($sheetone));
     $r->print('</body></html>');      $r->print('</body></html>');
   
     } else {
   # ----------------------------- Not in a course, or not allowed to modify parms
         $ENV{'user.error.msg'}=
           $r->uri.":opa:0:0:Cannot modify spreadsheet";
         return HTTP_NOT_ACCEPTABLE; 
     }
     return OK;      return OK;
 }  }
   

Removed from v.1.6  
changed lines
  Added in v.1.7


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