--- loncom/interface/Attic/lonspreadsheet.pm 2001/01/01 16:16:08 1.23 +++ loncom/interface/Attic/lonspreadsheet.pm 2001/01/01 19:28:37 1.24 @@ -496,12 +496,30 @@ sub exportrow { sub rown { my ($safeeval,$n)=@_; my $defaultbg; + my $rowdata=''; unless ($n eq '-') { $defaultbg=((($n-1)/5)==int(($n-1)/5))?'#E0E0':'#FFFF'; } else { $defaultbg='#E0FF'; } - my $rowdata="\n$n"; + 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.="\n
". + ''; + map { + $rowdata.=''; + } ('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.=''; + } + $rowdata.="\n"; my $showf=0; my $proc; my $maxred; @@ -537,7 +555,7 @@ sub rown { # ------------------------------------------------------------- Print out sheet sub outsheet { - my $safeeval=shift; + my ($r,$safeeval)=@_; my $maxred; my $realm; if (&gettype($safeeval) eq 'assesscalc') { @@ -551,7 +569,8 @@ sub outsheet { $realm='Course'; } my $maxyellow=52-$maxred; - my $tabledata='
 '.$what.''.$_.'
$n
'. + my $tabledata= + ''. ''. @@ -574,10 +593,11 @@ sub outsheet { my $row; my $maxrow=&getmaxrow($safeeval); $tabledata.=&rown($safeeval,'-'); + $r->print($tabledata); for ($row=0;$row<=$maxrow;$row++) { - $tabledata.=&rown($safeeval,$row); + $r->print(&rown($safeeval,$row)); } - $tabledata.='
'. $realm.'Import
'; + $r->print('
'); } @@ -818,11 +838,30 @@ sub updatestudentrows { unless ($classlst=~/^error\:/) { map { my ($name,$value)=split(/\=/,$_); - my ($end,$start)=split(/\_/,&Apache::lonnet::unescape($value)); + my ($end,$start)=split(/\:/,&Apache::lonnet::unescape($value)); my $active=1; if (($end) && ($now>$end)) { $active=0; } 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='Data not available: '.$name. + ''; + } 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.' '.$reply{$cname}.'
'; + map { + $rowlabel.=&Apache::lonnet::unescape($_).' '; + } split(/\&/,$reply); + } + + $currentlist{&Apache::lonnet::unescape($name)}=$rowlabel; } } split(/\&/,$classlst); # @@ -854,7 +893,7 @@ sub updatestudentrows { $maxrow++; $f{'A'.$maxrow}=$_; } - } keys %currentlist; + } sort keys %currentlist; if ($changed) { &setformulas($safeeval,%f); } @@ -963,7 +1002,7 @@ sub updaterows { } } -# --------------------------------------------------- Load data for one student +# ------------------------------------------------ Load data for one assessment sub rowazstudent { my $safeeval=shift; @@ -975,7 +1014,7 @@ sub rowazstudent { unless ($f{$_}=~/^\!/) { my @assessdata=split(/\_\_\_\;\_\_\_/, &Apache::lonnet::ssi( - '/res/msu/korte/junk.assesscalc',('utarget' => 'export', + '/adm/assesscalc',('utarget' => 'export', 'uname' => $uname, 'udom' => $udom, 'usymb' => $f{$_}))); @@ -997,6 +1036,41 @@ sub rowazstudent { &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, + 'usymb' => $f{$_}))); + 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 sub rowaassess { @@ -1189,7 +1263,7 @@ ENDSCRIPT &hiddenfield('unewfield',''). &hiddenfield('unewformula','')); } - + $r->rflush(); # ---------------------------------------- Read new sheet or modified worksheet my $sheetone=initsheet(); @@ -1286,7 +1360,7 @@ ENDSCRIPT # ------------------------------------------------------- Print or export sheet unless ($reroute) { - $r->print(&outsheet($sheetone)); + &outsheet($r,$sheetone); $r->print(''); } else {