[LON-CAPA-cvs] cvs: loncom /interface lonspreadsheet.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 04 Dec 2002 21:49:34 -0000
This is a MIME encoded message
--matthew1039038574
Content-Type: text/plain
matthew Wed Dec 4 16:49:34 2002 EDT
Modified files:
/loncom/interface lonspreadsheet.pm
Log:
Multiple bugfixes.
Correct spreadsheet is now loaded for assessment sheets (not just the default)
Spreadsheet filename is now a part of the rowlabel data for 'symb' rowlabels
and used by all the format_xxx_rowlabel routines.
The symb, title, and spreadsheet filename are now escaped before being
stored internally for rowlabels of type 'symb'.
The order assessments were display in the student spreadsheet was borken and
has now been fixed.
The code marked 'I do not think this works anymore' has been removed as has
the comment because it was correct.
IMPORTANT CHANGE: Changing the default assessment spreadsheet or the default
student spreadsheet will now expire all student spreadsheets. This
makes our caching work better.
--matthew1039038574
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20021204164934.txt"
Index: loncom/interface/lonspreadsheet.pm
diff -u loncom/interface/lonspreadsheet.pm:1.153 loncom/interface/lonspreadsheet.pm:1.154
--- loncom/interface/lonspreadsheet.pm:1.153 Tue Dec 3 05:04:21 2002
+++ loncom/interface/lonspreadsheet.pm Wed Dec 4 16:49:33 2002
@@ -1,5 +1,5 @@
#
-# $Id: lonspreadsheet.pm,v 1.153 2002/12/03 10:04:21 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.154 2002/12/04 21:49:33 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -981,7 +981,11 @@
if ($n) {
my ($usy,$ufn)=split(/__&&&\__/,$sheet->{'f'}->{'A'.$n});
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 {
$rowlabel = '';
}
@@ -1198,9 +1202,13 @@
my @sortby2=(undef);
# Skip row 0
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {
- my (undef,$symb,$uname,$udom,$mapid,$resid,$title) =
- split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}});
- $symb = &Apache::lonnet::unescape($symb);
+ my ($key,undef) = split(/__&&&\__/,$sheet->{'f'}->{'A'.$row});
+ my $rowlabel = $sheet->{'rowlabel'}->{$key};
+ 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)/);
if ($sequence eq '') {
$sequence = $symb;
@@ -1387,18 +1395,21 @@
if ($sheet->{'sheettype'} eq 'classcalc') {
$row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>';
# 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') {
+ my $ufn = (split(/:/,$rowlabel))[5];
$row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel);
$row_html.= '<br>'.
'<select name="sel_'.$rownum.'" '.
'onChange="changesheet('.$rownum.')">'.
'<option name="default">Default</option>';
+
foreach (@{$sheet->{'othersheets'}}) {
$row_html.='<option name="'.$_.'"';
- #if ($ufn eq $_) {
- # $row_html.=' selected';
- #}
+ if ($ufn eq $_) {
+ $row_html.=' selected';
+ }
$row_html.='>'.$_.'</option>';
}
$row_html.='</select></td>';
@@ -1902,9 +1913,16 @@
$cdom,$cnum);
if ($reply eq 'ok') {
if ($makedef) {
- return &Apache::lonnet::put('environment',
- {'spreadsheet_default_'.$stype => $fn },
- $cdom,$cnum);
+ $reply = &Apache::lonnet::put('environment',
+ {'spreadsheet_default_'.$stype => $fn },
+ $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;
}
@@ -2069,11 +2087,15 @@
my ($type,$labeldata) = split(':',$rowlabel,2);
my $result = '';
if ($type eq 'symb') {
- my ($symb,$mapid,$resid,$title) = split(':',$labeldata);
- $symb = &Apache::lonnet::unescape($symb);
+ my ($symb,$mapid,$resid,$title,$ufn) = split(':',$labeldata);
+ $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.
'&uname='.$sheet->{'uname'}.'&udom='.$sheet->{'udom'}.
- '&mapid='.$mapid.'&resid='.$resid.'">'.$title.'</a>';
+ '&ufn='.$ufn.
+ '&mapid='.$mapid.'&resid='.$resid.'">'.$title.'</a>';
} elsif ($type eq 'student') {
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata);
if ($fullname =~ /^\s*$/) {
@@ -2097,8 +2119,10 @@
my ($type,$labeldata) = split(':',$rowlabel,2);
my $result = '';
if ($type eq 'symb') {
- my ($symb,$mapid,$resid,$title) = split(':',$labeldata);
- $symb = &Apache::lonnet::unescape($symb);
+ my ($symb,$mapid,$resid,$title,$ufn) = split(':',$labeldata);
+ $ufn = &Apache::lonnet::unescape($ufn);
+ $symb = &Apache::lonnet::unescape($symb);
+ $title = &Apache::lonnet::unescape($title);
$result = $title;
} elsif ($type eq 'student') {
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata);
@@ -2119,8 +2143,10 @@
my ($type,$labeldata) = split(':',$rowlabel,2);
my $result = '';
if ($type eq 'symb') {
- my ($symb,$mapid,$resid,$title) = split(':',$labeldata);
- $symb = &Apache::lonnet::unescape($symb);
+ my ($symb,$mapid,$resid,$title,$ufn) = split(':',$labeldata);
+ $ufn = &Apache::lonnet::unescape($ufn);
+ $symb = &Apache::lonnet::unescape($symb);
+ $title = &Apache::lonnet::unescape($title);
$result = $title;
} elsif ($type eq 'student') {
my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata);
@@ -2228,10 +2254,11 @@
return 'Could not access course data';
}
#
- my %assesslist;
+ my %assesslist = ();
foreach ('Feedback','Evaluation','Tutoring','Discussion') {
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)) {
@@ -2243,8 +2270,9 @@
my $symb=
&Apache::lonnet::declutter($course_db{'map_id_'.$mapid}).
'___'.$resid.'___'.&Apache::lonnet::declutter($srcf);
- $assesslist{$symb}='symb:'.&Apache::lonnet::escape($symb).':'
- .$mapid.':'.$resid.':'.$course_db{'title_'.$id};
+ $assesslist{$symb} ='symb:'.&Apache::lonnet::escape($symb).':'
+ .$mapid.':'.$resid.':'.
+ &Apache::lonnet::escape($course_db{'title_'.$id});
}
}
untie(%course_db);
@@ -2343,10 +2371,6 @@
($formula =~ /^(~~~|---)/) )) {
$f{$_}='!!! Obsolete';
$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
@@ -2687,7 +2711,7 @@
&checkthis($uname.':'.$udom.':assesscalc:'.$map,$time) ||
&checkthis($uname.':'.$udom.':assesscalc:'.$usymb,$time)) {
return 1;
- }
+ }
} else {
if (&checkthis('::studentcalc:',$time) ||
&checkthis($uname.':'.$udom.':studentcalc:',$time)) {
@@ -2708,6 +2732,7 @@
$udom = $udom || $sheet->{'udom'};
$stype = $stype || $sheet->{'sheettype'};
my @exportarr=();
+ # This handles the assessment sheets for '_feedback', etc
if (defined($usymb) && ($usymb=~/^\_(\w+)/) &&
(!defined($fn) || $fn eq '')) {
$fn='default_'.$1;
@@ -2953,11 +2978,16 @@
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;
}
+ if (!$ENV{'form.ufn'} || $ENV{'form.ufn'} eq 'default') {
+ $ENV{'form.ufn'}='course_default_'.$sheettype;
+ }
#
# Interactive loading of specific sheet?
#
@@ -3272,3 +3302,5 @@
1;
__END__
+
+
--matthew1039038574--