Diff for /loncom/interface/Attic/lonspreadsheet.pm between versions 1.23 and 1.26

version 1.23, 2001/01/01 16:16:08 version 1.26, 2001/01/01 20:52:10
Line 496  sub exportrow { Line 496  sub exportrow {
 sub rown {  sub rown {
     my ($safeeval,$n)=@_;      my ($safeeval,$n)=@_;
     my $defaultbg;      my $defaultbg;
       my $rowdata='';
     unless ($n eq '-') {      unless ($n eq '-') {
        $defaultbg=((($n-1)/5)==int(($n-1)/5))?'#E0E0':'#FFFF';         $defaultbg=((($n-1)/5)==int(($n-1)/5))?'#E0E0':'#FFFF';
     } else {      } else {
        $defaultbg='#E0FF';         $defaultbg='#E0FF';
     }      }
     my $rowdata="\n<tr><td><b><font size=+1>$n</font></b></td>";      if ((($n-1)/25)==int(($n-1)/25)) {
           my $what='Student';
           if (&gettype($safeeval) eq 'assesscalc') {
       $what='Item';
    } elsif (&gettype($safeeval) eq 'studentcalc') {
               $what='Assessment';
           }
    $rowdata.="</table>\n<br><table border=2>".
           '<tr><td>&nbsp;<td>'.$what.'</td>';
           map {
              $rowdata.='<td>'.$_.'</td>';
           } ('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',
              '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');
           $rowdata.='</tr>';
       }
       $rowdata.="\n<tr><td><b><font size=+1>$n</font></b></td>";
     my $showf=0;      my $showf=0;
     my $proc;      my $proc;
     my $maxred;      my $maxred;
Line 537  sub rown { Line 555  sub rown {
 # ------------------------------------------------------------- Print out sheet  # ------------------------------------------------------------- Print out sheet
   
 sub outsheet {  sub outsheet {
     my $safeeval=shift;      my ($r,$safeeval)=@_;
     my $maxred;      my $maxred;
     my $realm;      my $realm;
     if (&gettype($safeeval) eq 'assesscalc') {      if (&gettype($safeeval) eq 'assesscalc') {
Line 551  sub outsheet { Line 569  sub outsheet {
         $realm='Course';          $realm='Course';
     }      }
     my $maxyellow=52-$maxred;      my $maxyellow=52-$maxred;
     my $tabledata='<table border=2><tr><th colspan=2 rowspan=2><font size=+2>'.      my $tabledata=
           '<table border=2><tr><th colspan=2 rowspan=2><font size=+2>'.
                   $realm.'</font></th>'.                    $realm.'</font></th>'.
                   '<td bgcolor=#FFDDDD colspan='.$maxred.                    '<td bgcolor=#FFDDDD colspan='.$maxred.
                   '><b><font size=+1>Import</font></b></td>'.                    '><b><font size=+1>Import</font></b></td>'.
Line 574  sub outsheet { Line 593  sub outsheet {
     my $row;      my $row;
     my $maxrow=&getmaxrow($safeeval);      my $maxrow=&getmaxrow($safeeval);
     $tabledata.=&rown($safeeval,'-');      $tabledata.=&rown($safeeval,'-');
       $r->print($tabledata);
     for ($row=0;$row<=$maxrow;$row++) {      for ($row=0;$row<=$maxrow;$row++) {
         $tabledata.=&rown($safeeval,$row);          $r->print(&rown($safeeval,$row));
     }      }
     $tabledata.='</table>';      $r->print('</table>');
 }  }
   
   
Line 818  sub updatestudentrows { Line 838  sub updatestudentrows {
     unless ($classlst=~/^error\:/) {      unless ($classlst=~/^error\:/) {
         map {          map {
             my ($name,$value)=split(/\=/,$_);              my ($name,$value)=split(/\=/,$_);
             my ($end,$start)=split(/\_/,&Apache::lonnet::unescape($value));              my ($end,$start)=split(/\:/,&Apache::lonnet::unescape($value));
             my $active=1;              my $active=1;
             if (($end) && ($now>$end)) { $active=0; }              if (($end) && ($now>$end)) { $active=0; }
             if ($active) {              if ($active) {
  $currentlist{&Apache::lonnet::unescape($name)}=1;                  my $rowlabel='';
                   $name=&Apache::lonnet::unescape($name);
                   my ($cname,$cdom)=split(/\:/,$name);
                   my $csec=
                &Apache::lonnet::usection($cdom,$cname,$ENV{'request.course.id'});
                   if ($csec==-1) {
                       $rowlabel='<font color=red>Data not available: '.$name.
         '</font>';
                   } else {
                       my %reply=&Apache::lonnet::idrget($cdom,$cname);
                       my $reply=&Apache::lonnet::reply('get:'.$cdom.':'.$cname.
         ':environment:firstname&middlename&lastname&generation',
                         &Apache::lonnet::homeserver($cname,$cdom));
                       $rowlabel=$csec.'&nbsp;'.$reply{$cname}.'<br>';
                       map {
                           $rowlabel.=&Apache::lonnet::unescape($_).' ';
                       } split(/\&/,$reply);
                   }
                  
    $currentlist{&Apache::lonnet::unescape($name)}=$rowlabel;
             }              }
         } split(/\&/,$classlst);          } split(/\&/,$classlst);
 #  #
Line 854  sub updatestudentrows { Line 893  sub updatestudentrows {
                 $maxrow++;                  $maxrow++;
                 $f{'A'.$maxrow}=$_;                  $f{'A'.$maxrow}=$_;
             }              }
         } keys %currentlist;                  } sort keys %currentlist;        
             
         if ($changed) { &setformulas($safeeval,%f); }          if ($changed) { &setformulas($safeeval,%f); }
   
Line 963  sub updaterows { Line 1002  sub updaterows {
     }      }
 }  }
   
 # --------------------------------------------------- Load data for one student  # ------------------------------------------------ Load data for one assessment
   
 sub rowazstudent {  sub rowazstudent {
     my $safeeval=shift;      my $safeeval=shift;
Line 975  sub rowazstudent { Line 1014  sub rowazstudent {
            unless ($f{$_}=~/^\!/) {             unless ($f{$_}=~/^\!/) {
               my @assessdata=split(/\_\_\_\;\_\_\_/,                my @assessdata=split(/\_\_\_\;\_\_\_/,
                              &Apache::lonnet::ssi(                               &Apache::lonnet::ssi(
         '/res/msu/korte/junk.assesscalc',('utarget' => 'export',                         '/adm/assesscalc',('utarget' => 'export',
                                           'uname'   => $uname,                                            'uname'   => $uname,
                                           'udom'    => $udom,                                            'udom'    => $udom,
                   'usymb'   => $f{$_})));                    'usymb'   => $f{$_})));
Line 997  sub rowazstudent { Line 1036  sub rowazstudent {
     &setconstants($safeeval,%c);      &setconstants($safeeval,%c);
 }  }
   
   # --------------------------------------------------- Load data for one student
   
   sub rowazclass {
       my $safeeval=shift;
       my %c=();
       my %f=&getformulas($safeeval);
       map {
    if ($_=~/^A(\d+)/) {
      my $row=$1;
              unless ($f{$_}=~/^\!/) {
         my ($tname,$tdom)=split(/\:/,$_);
                 my @assessdata=split(/\_\_\_\;\_\_\_/,
                                &Apache::lonnet::ssi(
                         '/adm/studentcalc',('utarget' => 'export',
                                             'uname'   => $tname,
                                             'udom'    => $tdom)));
                 my $index=0;
                 map {
                     if ($assessdata[$index]) {
        $c{$_.$row}=$assessdata[$index];
                        unless ($_ eq 'A') { 
    $f{$_.$row}='import';
                        }
     }
                     $index++;
                 } ('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');
      }
           }
       } keys %f;
       &setformulas($safeeval,%f);
       &setconstants($safeeval,%c);
   }
   
 # ------------------------------------------------ Load data for one assessment  # ------------------------------------------------ Load data for one assessment
   
 sub rowaassess {  sub rowaassess {
Line 1189  ENDSCRIPT Line 1262  ENDSCRIPT
        &hiddenfield('unewfield','').         &hiddenfield('unewfield','').
        &hiddenfield('unewformula',''));         &hiddenfield('unewformula',''));
   }    }
       $r->rflush();
 # ---------------------------------------- Read new sheet or modified worksheet  # ---------------------------------------- Read new sheet or modified worksheet
   
     my $sheetone=initsheet();      my $sheetone=initsheet();
Line 1209  ENDSCRIPT Line 1282  ENDSCRIPT
  &tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/',   &tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/',
                  $ENV{'form.usymb'});                   $ENV{'form.usymb'});
     } else {      } else {
           unless ($ENV{'form.ufn'}) {
              my $reply=&Apache::lonnet::reply('get:'.
                        $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.
                        $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                        ':environment:spreadsheet_default_'.
                        &gettype($sheetone),
                        $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
              unless (($reply=~/^error\:/) || ($reply eq '')) {
          $ENV{'form.ufn'}=$reply;
                  unless ($reroute) {
                     $r->print('<p>Using customized default spreadsheet<p>');
          }
              }
           }
         &readsheet($sheetone,$ENV{'form.ufn'},$r);          &readsheet($sheetone,$ENV{'form.ufn'},$r);
         $ENV{'form.ufn'}=&getfilename($sheetone);          $ENV{'form.ufn'}=&getfilename($sheetone);
     }      }
Line 1246  ENDSCRIPT Line 1333  ENDSCRIPT
             unless ($reroute) {              unless ($reroute) {
  $r->print('<p>Saving spreadsheet: '.$reply.'<p>');   $r->print('<p>Saving spreadsheet: '.$reply.'<p>');
             }              }
               if ($ENV{'form.makedefufn'}) {
                   my $reply=&Apache::lonnet::reply('put:'.
                        $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.
                        $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                        ':environment:spreadsheet_default_'.
                        &gettype($sheetone).'='.
                        &Apache::lonnet::escape($fname),
                        $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
                  unless ($reroute) {
              $r->print('<p>Making default spreadsheet: '.$reply.'<p>');
                  }
               }
         }          }
     }      }
 # ------------------------------------------------ Write the modified worksheet  # ------------------------------------------------ Write the modified worksheet
Line 1260  ENDSCRIPT Line 1359  ENDSCRIPT
         $fname=~s/\_[^\_]+$//;          $fname=~s/\_[^\_]+$//;
         if ($fname eq 'default') { $fname='course_default'; }          if ($fname eq 'default') { $fname='course_default'; }
         $r->print('<input type=submit name=saveas value="Save as ...">'.          $r->print('<input type=submit name=saveas value="Save as ...">'.
               '<input type=text size=20 name=newfn value="'.$fname.'"><p>');                '<input type=text size=20 name=newfn value="'.$fname.
                 '"> (make default: <input type=checkbox name="makedefufn">)<p>');
     }      }
     $r->print(&hiddenfield('ufn',$ENV{'form.ufn'}));      $r->print(&hiddenfield('ufn',$ENV{'form.ufn'}));
     unless (&gettype($sheetone) eq 'classcalc') {      unless (&gettype($sheetone) eq 'classcalc') {
Line 1278  ENDSCRIPT Line 1378  ENDSCRIPT
  &rowaassess($sheetone,$ENV{'form.usymb'});   &rowaassess($sheetone,$ENV{'form.usymb'});
     } elsif  (&gettype($sheetone) eq 'studentcalc') {      } elsif  (&gettype($sheetone) eq 'studentcalc') {
  &rowazstudent($sheetone);   &rowazstudent($sheetone);
       } else {
           &rowazclass($sheetone);
     }      }
     my $calcoutput=&calcsheet($sheetone);      my $calcoutput=&calcsheet($sheetone);
     unless ($reroute) {      unless ($reroute) {
Line 1286  ENDSCRIPT Line 1388  ENDSCRIPT
   
 # ------------------------------------------------------- Print or export sheet  # ------------------------------------------------------- Print or export sheet
    unless ($reroute) {        unless ($reroute) {   
     $r->print(&outsheet($sheetone));      &outsheet($r,$sheetone);
   
     $r->print('</form></body></html>');      $r->print('</form></body></html>');
   } else {    } else {

Removed from v.1.23  
changed lines
  Added in v.1.26


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