version 1.153, 2002/12/03 10:04:21
|
version 1.154, 2002/12/04 21:49:33
|
Line 981 sub outrowassess {
|
Line 981 sub outrowassess {
|
if ($n) { |
if ($n) { |
my ($usy,$ufn)=split(/__&&&\__/,$sheet->{'f'}->{'A'.$n}); |
my ($usy,$ufn)=split(/__&&&\__/,$sheet->{'f'}->{'A'.$n}); |
if (exists($sheet->{'rowlabel'}->{$usy})) { |
if (exists($sheet->{'rowlabel'}->{$usy})) { |
$rowlabel = $sheet->{'rowlabel'}->{$usy}; |
# This is dumb, but we need the information when we output |
|
# the html version of the studentcalc spreadsheet for the |
|
# links to the assesscalc sheets. |
|
$rowlabel = $sheet->{'rowlabel'}->{$usy}.':'. |
|
&Apache::lonnet::escape($ufn); |
} else { |
} else { |
$rowlabel = ''; |
$rowlabel = ''; |
} |
} |
Line 1198 sub sort_indicies {
|
Line 1202 sub sort_indicies {
|
my @sortby2=(undef); |
my @sortby2=(undef); |
# Skip row 0 |
# Skip row 0 |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
my (undef,$symb,$uname,$udom,$mapid,$resid,$title) = |
my ($key,undef) = split(/__&&&\__/,$sheet->{'f'}->{'A'.$row}); |
split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}}); |
my $rowlabel = $sheet->{'rowlabel'}->{$key}; |
$symb = &Apache::lonnet::unescape($symb); |
my (undef,$symb,$mapid,$resid,$title,$ufn) = |
|
split(':',$rowlabel); |
|
$ufn = &Apache::lonnet::unescape($ufn); |
|
$symb = &Apache::lonnet::unescape($symb); |
|
$title = &Apache::lonnet::unescape($title); |
my ($sequence) = ($symb =~ /\/([^\/]*\.sequence)/); |
my ($sequence) = ($symb =~ /\/([^\/]*\.sequence)/); |
if ($sequence eq '') { |
if ($sequence eq '') { |
$sequence = $symb; |
$sequence = $symb; |
Line 1387 END
|
Line 1395 END
|
if ($sheet->{'sheettype'} eq 'classcalc') { |
if ($sheet->{'sheettype'} eq 'classcalc') { |
$row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>'; |
$row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>'; |
# Output links for each student? |
# Output links for each student? |
# Nope, that is already done for us in format_html_rowlabel (for now) |
# Nope, that is already done for us in format_html_rowlabel |
|
# (for now) |
} elsif ($sheet->{'sheettype'} eq 'studentcalc') { |
} elsif ($sheet->{'sheettype'} eq 'studentcalc') { |
|
my $ufn = (split(/:/,$rowlabel))[5]; |
$row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel); |
$row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel); |
$row_html.= '<br>'. |
$row_html.= '<br>'. |
'<select name="sel_'.$rownum.'" '. |
'<select name="sel_'.$rownum.'" '. |
'onChange="changesheet('.$rownum.')">'. |
'onChange="changesheet('.$rownum.')">'. |
'<option name="default">Default</option>'; |
'<option name="default">Default</option>'; |
|
|
foreach (@{$sheet->{'othersheets'}}) { |
foreach (@{$sheet->{'othersheets'}}) { |
$row_html.='<option name="'.$_.'"'; |
$row_html.='<option name="'.$_.'"'; |
#if ($ufn eq $_) { |
if ($ufn eq $_) { |
# $row_html.=' selected'; |
$row_html.=' selected'; |
#} |
} |
$row_html.='>'.$_.'</option>'; |
$row_html.='>'.$_.'</option>'; |
} |
} |
$row_html.='</select></td>'; |
$row_html.='</select></td>'; |
Line 1902 sub writesheet {
|
Line 1913 sub writesheet {
|
$cdom,$cnum); |
$cdom,$cnum); |
if ($reply eq 'ok') { |
if ($reply eq 'ok') { |
if ($makedef) { |
if ($makedef) { |
return &Apache::lonnet::put('environment', |
$reply = &Apache::lonnet::put('environment', |
{'spreadsheet_default_'.$stype => $fn }, |
{'spreadsheet_default_'.$stype => $fn }, |
$cdom,$cnum); |
$cdom,$cnum); |
|
if ($reply eq 'ok' && |
|
($sheet->{'sheettype'} eq 'studentcalc' || |
|
$sheet->{'sheettype'} eq 'assesscalc')) { |
|
# Expire the spreadsheets of the other students. |
|
&Apache::lonnet::expirespread('','','studentcalc',''); |
|
} |
|
return $reply; |
} |
} |
return $reply; |
return $reply; |
} |
} |
Line 2069 sub format_html_rowlabel {
|
Line 2087 sub format_html_rowlabel {
|
my ($type,$labeldata) = split(':',$rowlabel,2); |
my ($type,$labeldata) = split(':',$rowlabel,2); |
my $result = ''; |
my $result = ''; |
if ($type eq 'symb') { |
if ($type eq 'symb') { |
my ($symb,$mapid,$resid,$title) = split(':',$labeldata); |
my ($symb,$mapid,$resid,$title,$ufn) = split(':',$labeldata); |
$symb = &Apache::lonnet::unescape($symb); |
$ufn = 'default' if (!defined($ufn) || $ufn eq ''); |
|
$ufn = &Apache::lonnet::unescape($ufn); |
|
$symb = &Apache::lonnet::unescape($symb); |
|
$title = &Apache::lonnet::unescape($title); |
$result = '<a href="/adm/assesscalc?usymb='.$symb. |
$result = '<a href="/adm/assesscalc?usymb='.$symb. |
'&uname='.$sheet->{'uname'}.'&udom='.$sheet->{'udom'}. |
'&uname='.$sheet->{'uname'}.'&udom='.$sheet->{'udom'}. |
'&mapid='.$mapid.'&resid='.$resid.'">'.$title.'</a>'; |
'&ufn='.$ufn. |
|
'&mapid='.$mapid.'&resid='.$resid.'">'.$title.'</a>'; |
} elsif ($type eq 'student') { |
} elsif ($type eq 'student') { |
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); |
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); |
if ($fullname =~ /^\s*$/) { |
if ($fullname =~ /^\s*$/) { |
Line 2097 sub format_csv_rowlabel {
|
Line 2119 sub format_csv_rowlabel {
|
my ($type,$labeldata) = split(':',$rowlabel,2); |
my ($type,$labeldata) = split(':',$rowlabel,2); |
my $result = ''; |
my $result = ''; |
if ($type eq 'symb') { |
if ($type eq 'symb') { |
my ($symb,$mapid,$resid,$title) = split(':',$labeldata); |
my ($symb,$mapid,$resid,$title,$ufn) = split(':',$labeldata); |
$symb = &Apache::lonnet::unescape($symb); |
$ufn = &Apache::lonnet::unescape($ufn); |
|
$symb = &Apache::lonnet::unescape($symb); |
|
$title = &Apache::lonnet::unescape($title); |
$result = $title; |
$result = $title; |
} elsif ($type eq 'student') { |
} elsif ($type eq 'student') { |
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); |
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); |
Line 2119 sub format_excel_rowlabel {
|
Line 2143 sub format_excel_rowlabel {
|
my ($type,$labeldata) = split(':',$rowlabel,2); |
my ($type,$labeldata) = split(':',$rowlabel,2); |
my $result = ''; |
my $result = ''; |
if ($type eq 'symb') { |
if ($type eq 'symb') { |
my ($symb,$mapid,$resid,$title) = split(':',$labeldata); |
my ($symb,$mapid,$resid,$title,$ufn) = split(':',$labeldata); |
$symb = &Apache::lonnet::unescape($symb); |
$ufn = &Apache::lonnet::unescape($ufn); |
|
$symb = &Apache::lonnet::unescape($symb); |
|
$title = &Apache::lonnet::unescape($title); |
$result = $title; |
$result = $title; |
} elsif ($type eq 'student') { |
} elsif ($type eq 'student') { |
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); |
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata); |
Line 2228 sub get_student_rowlabels {
|
Line 2254 sub get_student_rowlabels {
|
return 'Could not access course data'; |
return 'Could not access course data'; |
} |
} |
# |
# |
my %assesslist; |
my %assesslist = (); |
foreach ('Feedback','Evaluation','Tutoring','Discussion') { |
foreach ('Feedback','Evaluation','Tutoring','Discussion') { |
my $symb = '_'.lc($_); |
my $symb = '_'.lc($_); |
$assesslist{$symb} = join(':',('symb',$symb,0,0,$_)); |
$assesslist{$symb} = join(':',('symb',$symb,0,0, |
|
&Apache::lonnet::escape($_))); |
} |
} |
# |
# |
while (my ($key,$srcf) = each(%course_db)) { |
while (my ($key,$srcf) = each(%course_db)) { |
Line 2243 sub get_student_rowlabels {
|
Line 2270 sub get_student_rowlabels {
|
my $symb= |
my $symb= |
&Apache::lonnet::declutter($course_db{'map_id_'.$mapid}). |
&Apache::lonnet::declutter($course_db{'map_id_'.$mapid}). |
'___'.$resid.'___'.&Apache::lonnet::declutter($srcf); |
'___'.$resid.'___'.&Apache::lonnet::declutter($srcf); |
$assesslist{$symb}='symb:'.&Apache::lonnet::escape($symb).':' |
$assesslist{$symb} ='symb:'.&Apache::lonnet::escape($symb).':' |
.$mapid.':'.$resid.':'.$course_db{'title_'.$id}; |
.$mapid.':'.$resid.':'. |
|
&Apache::lonnet::escape($course_db{'title_'.$id}); |
} |
} |
} |
} |
untie(%course_db); |
untie(%course_db); |
Line 2343 sub updatestudentassesssheet {
|
Line 2371 sub updatestudentassesssheet {
|
($formula =~ /^(~~~|---)/) )) { |
($formula =~ /^(~~~|---)/) )) { |
$f{$_}='!!! Obsolete'; |
$f{$_}='!!! Obsolete'; |
$changed=1; |
$changed=1; |
} elsif ($ufn) { |
|
# I do not think this works any more |
|
$sheet->{'rowlabel'}->{$usy} |
|
=~s/assesscalc\?usymb\=/assesscalc\?ufn\=$ufn&\usymb\=/; |
|
} |
} |
} |
} |
# New and unknown keys |
# New and unknown keys |
Line 2687 sub forcedrecalc {
|
Line 2711 sub forcedrecalc {
|
&checkthis($uname.':'.$udom.':assesscalc:'.$map,$time) || |
&checkthis($uname.':'.$udom.':assesscalc:'.$map,$time) || |
&checkthis($uname.':'.$udom.':assesscalc:'.$usymb,$time)) { |
&checkthis($uname.':'.$udom.':assesscalc:'.$usymb,$time)) { |
return 1; |
return 1; |
} |
} |
} else { |
} else { |
if (&checkthis('::studentcalc:',$time) || |
if (&checkthis('::studentcalc:',$time) || |
&checkthis($uname.':'.$udom.':studentcalc:',$time)) { |
&checkthis($uname.':'.$udom.':studentcalc:',$time)) { |
Line 2708 sub exportsheet {
|
Line 2732 sub exportsheet {
|
$udom = $udom || $sheet->{'udom'}; |
$udom = $udom || $sheet->{'udom'}; |
$stype = $stype || $sheet->{'sheettype'}; |
$stype = $stype || $sheet->{'sheettype'}; |
my @exportarr=(); |
my @exportarr=(); |
|
# This handles the assessment sheets for '_feedback', etc |
if (defined($usymb) && ($usymb=~/^\_(\w+)/) && |
if (defined($usymb) && ($usymb=~/^\_(\w+)/) && |
(!defined($fn) || $fn eq '')) { |
(!defined($fn) || $fn eq '')) { |
$fn='default_'.$1; |
$fn='default_'.$1; |
Line 2953 sub handler {
|
Line 2978 sub handler {
|
delete $ENV{'form.unewformula'} if (exists($ENV{'form.unewformula'})); |
delete $ENV{'form.unewformula'} if (exists($ENV{'form.unewformula'})); |
} |
} |
# |
# |
# Clean up symb and spreadsheet filename |
# Look for special assessment spreadsheets - '_feedback', etc. |
# |
# |
if (($ENV{'form.usymb'}=~/^\_(\w+)/) && (!$ENV{'form.ufn'})) { |
if (($ENV{'form.usymb'}=~/^\_(\w+)/) && (!$ENV{'form.ufn'} || |
|
$ENV{'form.ufn'} eq '' || |
|
$ENV{'form.ufn'} eq 'default')) { |
$ENV{'form.ufn'}='default_'.$1; |
$ENV{'form.ufn'}='default_'.$1; |
} |
} |
|
if (!$ENV{'form.ufn'} || $ENV{'form.ufn'} eq 'default') { |
|
$ENV{'form.ufn'}='course_default_'.$sheettype; |
|
} |
# |
# |
# Interactive loading of specific sheet? |
# Interactive loading of specific sheet? |
# |
# |
Line 3272 ENDSCRIPT
|
Line 3302 ENDSCRIPT
|
|
|
1; |
1; |
__END__ |
__END__ |
|
|
|
|