version 1.64, 2001/09/14 00:16:02
|
version 1.77, 2001/12/27 19:37:46
|
Line 6
|
Line 6
|
# 01/01/01,02/01,03/01,19/01,20/01,22/01, |
# 01/01/01,02/01,03/01,19/01,20/01,22/01, |
# 03/05,03/08,03/10,03/12,03/13,03/15,03/17, |
# 03/05,03/08,03/10,03/12,03/13,03/15,03/17, |
# 03/19,03/20,03/21,03/27,04/05,04/09, |
# 03/19,03/20,03/21,03/27,04/05,04/09, |
# 07/09,07/14,07/21,09/01,09/10,9/11,9/12,9/13 Gerd Kortemeyer |
# 07/09,07/14,07/21,09/01,09/10,9/11,9/12,9/13,9/14,9/17, |
|
# 10/16,10/17,10/20,11/05,11/28,12/27 Gerd Kortemeyer |
|
|
package Apache::lonspreadsheet; |
package Apache::lonspreadsheet; |
|
|
Line 676 sub rown {
|
Line 677 sub rown {
|
} else { |
} else { |
$defaultbg='#E0FF'; |
$defaultbg='#E0FF'; |
} |
} |
$rowdata.="\n<tr><td><b><font size=+1>$n</font></b></td>"; |
unless ($ENV{'form.showcsv'}) { |
|
$rowdata.="\n<tr><td><b><font size=+1>$n</font></b></td>"; |
|
} else { |
|
$rowdata.="\n".'"'.$n.'"'; |
|
} |
my $showf=0; |
my $showf=0; |
my $proc; |
my $proc; |
my $maxred; |
my $maxred; |
Line 699 sub rown {
|
Line 704 sub rown {
|
if ((($vl ne '') || ($vl eq '0')) && |
if ((($vl ne '') || ($vl eq '0')) && |
(($showf==1) || ($sheettype ne 'studentcalc'))) { $dataflag=1; } |
(($showf==1) || ($sheettype ne 'studentcalc'))) { $dataflag=1; } |
if ($showf==0) { $vl=$_; } |
if ($showf==0) { $vl=$_; } |
|
unless ($ENV{'form.showcsv'}) { |
if ($showf<=$maxred) { $bgcolor='#FFDDDD'; } |
if ($showf<=$maxred) { $bgcolor='#FFDDDD'; } |
if (($n==0) && ($showf<=26)) { $bgcolor='#CCCCFF'; } |
if (($n==0) && ($showf<=26)) { $bgcolor='#CCCCFF'; } |
if (($showf>$maxred) || ((!$n) && ($showf>0))) { |
if (($showf>$maxred) || ((!$n) && ($showf>0))) { |
Line 711 sub rown {
|
Line 717 sub rown {
|
} else { |
} else { |
$rowdata.='<td bgcolor='.$bgcolor.'> '.$vl.' </td>'; |
$rowdata.='<td bgcolor='.$bgcolor.'> '.$vl.' </td>'; |
} |
} |
|
} else { |
|
$rowdata.=',"'.$vl.'"'; |
|
} |
$showf++; |
$showf++; |
} $safeeval->reval($proc.'('.$n.')'); |
} $safeeval->reval($proc.'('.$n.')'); |
if ($ENV{'form.showall'} || ($dataflag)) { |
if ($ENV{'form.showall'} || ($dataflag)) { |
return $rowdata.'</tr>'; |
return $rowdata.($ENV{'form.showcsv'}?'':'</tr>'); |
} else { |
} else { |
return ''; |
return ''; |
} |
} |
Line 737 sub outsheet {
|
Line 746 sub outsheet {
|
$realm='Course'; |
$realm='Course'; |
} |
} |
my $maxyellow=52-$maxred; |
my $maxyellow=52-$maxred; |
my $tabledata= |
my $tabledata; |
|
unless ($ENV{'form.showcsv'}) { |
|
$tabledata= |
'<table border=2><tr><th colspan=2 rowspan=2><font size=+2>'. |
'<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. |
Line 757 sub outsheet {
|
Line 768 sub outsheet {
|
'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', |
'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'); |
$tabledata.='</tr>'; |
$tabledata.='</tr>'.&rown($safeeval,'-').&rown($safeeval,0); |
my $row; |
} else { $tabledata='<pre>'; } |
my $maxrow=&getmaxrow($safeeval); |
|
$tabledata.=&rown($safeeval,'-').&rown($safeeval,0); |
|
$r->print($tabledata); |
$r->print($tabledata); |
|
|
# $sortby=$safeeval->reval('$f{"A'.$n.'"}'); |
my $row; |
# print join(',',@linklst).'<br>'; |
my $maxrow=&getmaxrow($safeeval); |
# @linklst=sort { $sortprt[$a] cmp $sortprt[$b]; } @linklst; |
|
# print join(',',@linklst).'<br>'; |
|
|
|
my $n=0; |
my @sortby=(); |
|
my @sortidx=(); |
for ($row=1;$row<=$maxrow;$row++) { |
for ($row=1;$row<=$maxrow;$row++) { |
my $thisrow=&rown($safeeval,$row); |
$sortby[$row-1]=$safeeval->reval('$f{"A'.$row.'"}'); |
if ($thisrow) { |
$sortidx[$row-1]=$row-1; |
if ($n/25==int($n/25)) { |
} |
|
@sortidx=sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; |
|
|
my $what='Student'; |
my $what='Student'; |
if (&gettype($safeeval) eq 'assesscalc') { |
if (&gettype($safeeval) eq 'assesscalc') { |
$what='Item'; |
$what='Item'; |
} elsif (&gettype($safeeval) eq 'studentcalc') { |
} elsif (&gettype($safeeval) eq 'studentcalc') { |
$what='Assessment'; |
$what='Assessment'; |
} |
} |
$r->print("</table>\n<br><table border=2>". |
|
'<tr><td> <td>'.$what.'</td>'); |
my $n=0; |
|
for ($row=0;$row<$maxrow;$row++) { |
|
my $thisrow=&rown($safeeval,$sortidx[$row]+1); |
|
if ($thisrow) { |
|
if (($n/25==int($n/25)) && (!$ENV{'form.showcsv'})) { |
|
$r->print("</table>\n<br>\n"); |
|
$r->rflush(); |
|
$r->print('<table border=2><tr><td> <td>'.$what.'</td>'); |
map { |
map { |
$r->print('<td>'.$_.'</td>'); |
$r->print('<td>'.$_.'</td>'); |
} ('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', |
Line 793 sub outsheet {
|
Line 811 sub outsheet {
|
$r->print($thisrow); |
$r->print($thisrow); |
} |
} |
} |
} |
$r->print('</table>'); |
$r->print($ENV{'form.showcsv'}?'</pre>':'</table>'); |
} |
} |
|
|
# |
# |
Line 862 sub readsheet {
|
Line 880 sub readsheet {
|
my $sheetxml=''; |
my $sheetxml=''; |
{ |
{ |
my $fh; |
my $fh; |
if ($fh=Apache::File->new($includedir. |
my $dfn=$fn; |
'/default.'.&gettype($safeeval))) { |
$dfn=~s/\_/\./g; |
|
if ($fh=Apache::File->new($includedir.'/'.$dfn)) { |
$sheetxml=join('',<$fh>); |
$sheetxml=join('',<$fh>); |
} |
} else { |
|
$sheetxml='<field row="0" col="A">"Error"</field>'; |
|
} |
} |
} |
my $parser=HTML::TokeParser->new(\$sheetxml); |
my $parser=HTML::TokeParser->new(\$sheetxml); |
my $token; |
my $token; |
Line 1044 sub parmval {
|
Line 1065 sub parmval {
|
# ----------------------------------------------------- Cascading lookup scheme |
# ----------------------------------------------------- Cascading lookup scheme |
my $rwhat=$what; |
my $rwhat=$what; |
$what=~s/^parameter\_//; |
$what=~s/^parameter\_//; |
$what=~s/\_/\./; |
$what=~s/\_([^\_]+)$/\.$1/; |
|
|
my $symbparm=$symb.'.'.$what; |
my $symbparm=$symb.'.'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
Line 1135 sub updateclasssheet {
|
Line 1156 sub updateclasssheet {
|
my ($sname,$sdom)=split(/\:/,$name); |
my ($sname,$sdom)=split(/\:/,$name); |
my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid); |
my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid); |
if ($ssec==-1) { |
if ($ssec==-1) { |
|
unless ($ENV{'form.showcsv'}) { |
$rowlabel='<font color=red>Data not available: '.$name. |
$rowlabel='<font color=red>Data not available: '.$name. |
'</font>'; |
'</font>'; |
|
} else { |
|
$rowlabel='ERROR","'.$name. |
|
'","Data not available","","","'; |
|
} |
} else { |
} else { |
my %reply=&Apache::lonnet::idrget($sdom,$sname); |
my %reply=&Apache::lonnet::idrget($sdom,$sname); |
my $reply=&Apache::lonnet::reply('get:'.$sdom.':'.$sname. |
my $reply=&Apache::lonnet::reply('get:'.$sdom.':'.$sname. |
':environment:firstname&middlename&lastname&generation', |
':environment:firstname&middlename&lastname&generation', |
&Apache::lonnet::homeserver($sname,$sdom)); |
&Apache::lonnet::homeserver($sname,$sdom)); |
|
unless ($ENV{'form.showcsv'}) { |
$rowlabel='<a href="/adm/studentcalc?uname='.$sname. |
$rowlabel='<a href="/adm/studentcalc?uname='.$sname. |
'&udom='.$sdom.'">'. |
'&udom='.$sdom.'">'. |
$ssec.' '.$reply{$sname}.'<br>'; |
$ssec.' '.$reply{$sname}.'<br>'; |
Line 1149 sub updateclasssheet {
|
Line 1176 sub updateclasssheet {
|
$rowlabel.=&Apache::lonnet::unescape($_).' '; |
$rowlabel.=&Apache::lonnet::unescape($_).' '; |
} split(/\&/,$reply); |
} split(/\&/,$reply); |
$rowlabel.='</a>'; |
$rowlabel.='</a>'; |
|
} else { |
|
$rowlabel=$ssec.'","'.$reply{$sname}.'"'; |
|
my $ncount=0; |
|
map { |
|
$rowlabel.=',"'.&Apache::lonnet::unescape($_).'"'; |
|
$ncount++; |
|
} split(/\&/,$reply); |
|
unless ($ncount==4) { $rowlabel.=',""'; } |
|
$rowlabel=~s/\"$//; |
|
} |
} |
} |
$currentlist{&Apache::lonnet::unescape($name)}=$rowlabel; |
$currentlist{&Apache::lonnet::unescape($name)}=$rowlabel; |
} |
} |
Line 1208 sub updatestudentassesssheet {
|
Line 1245 sub updatestudentassesssheet {
|
# --------------------------------------------------------- Get all assessments |
# --------------------------------------------------------- Get all assessments |
|
|
my %allkeys=('timestamp' => |
my %allkeys=('timestamp' => |
'Timestamp of Last Transaction<br>timestamp'); |
'Timestamp of Last Transaction<br>timestamp', |
my %allassess=(); |
'subnumber' => |
|
'Number of Submissions<br>subnumber', |
|
'tutornumber' => |
|
'Number of Tutor Responses<br>tutornumber', |
|
'totalpoints' => |
|
'Total Points Granted<br>totalpoints'); |
|
|
my $adduserstr=''; |
my $adduserstr=''; |
if ((&getuname($safeeval) ne $ENV{'user.name'}) || |
if ((&getuname($safeeval) ne $ENV{'user.name'}) || |
Line 1218 sub updatestudentassesssheet {
|
Line 1260 sub updatestudentassesssheet {
|
'&udom='.&getudom($safeeval); |
'&udom='.&getudom($safeeval); |
} |
} |
|
|
|
my %allassess=('_feedback' => |
|
'<a href="/adm/assesscalc?usymb=_feedback'.$adduserstr. |
|
'">Feedback</a>', |
|
'_evaluation' => |
|
'<a href="/adm/assesscalc?usymb=_evaluation'.$adduserstr. |
|
'">Evaluation</a>', |
|
'_tutoring' => |
|
'<a href="/adm/assesscalc?usymb=_tutoring'.$adduserstr. |
|
'">Tutoring</a>', |
|
'_discussion' => |
|
'<a href="/adm/assesscalc?usymb=_discussion'.$adduserstr. |
|
'">Discussion</a>' |
|
); |
|
|
map { |
map { |
if ($_=~/^src\_(\d+)\.(\d+)$/) { |
if ($_=~/^src\_(\d+)\.(\d+)$/) { |
my $mapid=$1; |
my $mapid=$1; |
Line 1491 sub loadassessment {
|
Line 1547 sub loadassessment {
|
} |
} |
# ----------------------------- returnhash now has all stores for this resource |
# ----------------------------- returnhash now has all stores for this resource |
|
|
|
# --------- convert all "_" to "." to be able to use libraries, multiparts, etc |
|
|
|
my @oldkeys=keys %returnhash; |
|
|
|
map { |
|
my $name=$_; |
|
my $value=$returnhash{$_}; |
|
delete $returnhash{$_}; |
|
$name=~s/\_/\./g; |
|
$returnhash{$name}=$value; |
|
} @oldkeys; |
|
|
# ---------------------------- initialize coursedata and userdata for this user |
# ---------------------------- initialize coursedata and userdata for this user |
undef %courseopt; |
undef %courseopt; |
undef %useropt; |
undef %useropt; |
Line 1562 sub loadassessment {
|
Line 1630 sub loadassessment {
|
my $key=$f{$_}; |
my $key=$f{$_}; |
my $ckey=$key; |
my $ckey=$key; |
$key=~s/^stores\_/resource\./; |
$key=~s/^stores\_/resource\./; |
$key=~s/\_/\./; |
$key=~s/\_/\./g; |
$c{$_}=$returnhash{$key}; |
$c{$_}=$returnhash{$key}; |
$c{$ckey}=$returnhash{$key}; |
$c{$ckey}=$returnhash{$key}; |
} |
} |
Line 1669 sub forcedrecalc {
|
Line 1737 sub forcedrecalc {
|
sub exportsheet { |
sub exportsheet { |
my ($uname,$udom,$stype,$usymb,$fn)=@_; |
my ($uname,$udom,$stype,$usymb,$fn)=@_; |
my @exportarr=(); |
my @exportarr=(); |
|
|
|
if (($usymb=~/^\_(\w+)/) && (!$fn)) { |
|
$fn='default_'.$1; |
|
} |
|
|
# |
# |
# Check if cached |
# Check if cached |
# |
# |
Line 1893 $tmpdir=$r->dir_config('lonDaemons').'/t
|
Line 1966 $tmpdir=$r->dir_config('lonDaemons').'/t
|
} |
} |
} (split(/&/,$ENV{'QUERY_STRING'})); |
} (split(/&/,$ENV{'QUERY_STRING'})); |
|
|
|
if (($ENV{'form.usymb'}=~/^\_(\w+)/) && (!$ENV{'form.ufn'})) { |
|
$ENV{'form.ufn'}='default_'.$1; |
|
} |
|
|
# -------------------------------------- Interactive loading of specific sheet? |
# -------------------------------------- Interactive loading of specific sheet? |
if (($ENV{'form.load'}) && ($ENV{'form.loadthissheet'} ne 'Default')) { |
if (($ENV{'form.load'}) && ($ENV{'form.loadthissheet'} ne 'Default')) { |
$ENV{'form.ufn'}=$ENV{'form.loadthissheet'}; |
$ENV{'form.ufn'}=$ENV{'form.loadthissheet'}; |
Line 2001 ENDSCRIPT
|
Line 2078 ENDSCRIPT
|
} else { |
} else { |
$r->print('<br><b>Section/Group:</b> '.&getcsec($asheet)); |
$r->print('<br><b>Section/Group:</b> '.&getcsec($asheet)); |
} |
} |
|
if ($ENV{'form.usymb'}) { |
|
$r->print('<br><b>Assessment:</b> <tt>'.$ENV{'form.usymb'}.'</tt>'); |
|
} |
} |
} |
|
|
# ---------------------------------------------------------------- Course title |
# ---------------------------------------------------------------- Course title |
Line 2135 ENDSCRIPT
|
Line 2215 ENDSCRIPT
|
} else { |
} else { |
$r->print('<br>Show empty rows: '); |
$r->print('<br>Show empty rows: '); |
} |
} |
$r->print('<input type=checkbox name=showall onClick="submit()"'); |
|
if ($ENV{'form.showall'}) { $r->print(' checked'); } |
|
$r->print('>'); |
|
|
|
|
$r->print(&hiddenfield('userselhidden','true'). |
|
'<input type=checkbox name=showall onClick="submit()"'); |
|
|
|
if ($ENV{'form.showall'}) { |
|
$r->print(' checked'); |
|
} else { |
|
unless ($ENV{'form.userselhidden'}) { |
|
unless |
|
($ENV{'course.'.$ENV{'request.course.id'}.'.hideemptyrows'} eq 'yes') { |
|
$r->print(' checked'); |
|
$ENV{'form.showall'}=1; |
|
} |
|
} |
|
} |
|
$r->print('>'); |
|
if (&gettype($asheet) eq 'classcalc') { |
|
$r->print( |
|
' Output CSV format: <input type=checkbox name=showcsv onClick="submit()"'); |
|
if ($ENV{'form.showcsv'}) { $r->print(' checked'); } |
|
$r->print('>'); |
|
} |
# ------------------------------------------------------------- Print out sheet |
# ------------------------------------------------------------- Print out sheet |
|
|
&outsheet($r,$asheet); |
&outsheet($r,$asheet); |
Line 2157 ENDSCRIPT
|
Line 2255 ENDSCRIPT
|
|
|
1; |
1; |
__END__ |
__END__ |
|
|
|
|
|
|
|
|