version 1.154, 2002/12/04 21:49:33
|
version 1.161, 2003/01/13 14:58:28
|
Line 961 ENDDEFS
|
Line 961 ENDDEFS
|
sub templaterow { |
sub templaterow { |
my $sheet = shift; |
my $sheet = shift; |
my @cols=(); |
my @cols=(); |
my $rowlabel = 'Template'; |
my $rowlabel = 'Template</td><td> '; |
foreach ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
foreach ('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', |
'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 989 sub outrowassess {
|
Line 989 sub outrowassess {
|
} else { |
} else { |
$rowlabel = ''; |
$rowlabel = ''; |
} |
} |
|
} elsif ($ENV{'request.role'} =~ /^st\./) { |
|
$rowlabel = 'Summary</td><td>0'; |
} else { |
} else { |
$rowlabel = 'Export'; |
$rowlabel = 'Export</td><td>0'; |
} |
} |
foreach ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
foreach ('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', |
Line 1011 sub outrow {
|
Line 1013 sub outrow {
|
$rowlabel = $sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$n}}; |
$rowlabel = $sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$n}}; |
} else { |
} else { |
if ($sheet->{'sheettype'} eq 'classcalc') { |
if ($sheet->{'sheettype'} eq 'classcalc') { |
$rowlabel = 'Summary'; |
$rowlabel = 'Summary</td><td>0'; |
} else { |
} else { |
$rowlabel = 'Export'; |
$rowlabel = 'Export</td><td>0'; |
} |
} |
} |
} |
foreach ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
foreach ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
Line 1259 sub html_editable_cell {
|
Line 1261 sub html_editable_cell {
|
} elsif ($value =~ /^\s*$/ ) { |
} elsif ($value =~ /^\s*$/ ) { |
$value = '<font color="'.$bgcolor.'">#</font>'; |
$value = '<font color="'.$bgcolor.'">#</font>'; |
} else { |
} else { |
$value = &HTML::Entities::encode($value); |
$value = &HTML::Entities::encode($value) if ($value !~/ /); |
} |
} |
# Make the formula safe for outputting |
# Make the formula safe for outputting |
$formula =~ s/\'/\"/g; |
$formula =~ s/\'/\"/g; |
Line 1277 sub html_editable_cell {
|
Line 1279 sub html_editable_cell {
|
sub html_uneditable_cell { |
sub html_uneditable_cell { |
my ($cell,$bgcolor) = @_; |
my ($cell,$bgcolor) = @_; |
my $value = (defined($cell) ? $cell->{'value'} : ''); |
my $value = (defined($cell) ? $cell->{'value'} : ''); |
$value = &HTML::Entities::encode($value); |
$value = &HTML::Entities::encode($value) if ($value !~/ /); |
return ' '.$value.' '; |
return ' '.$value.' '; |
} |
} |
|
|
sub outsheet_html { |
sub outsheet_html { |
my ($sheet,$r) = @_; |
my ($sheet,$r) = @_; |
my ($num_uneditable,$realm,$row_type); |
my ($num_uneditable,$realm,$row_type); |
|
my $requester_is_student = ($ENV{'request.role'} =~ /^st\./); |
if ($sheet->{'sheettype'} eq 'assesscalc') { |
if ($sheet->{'sheettype'} eq 'assesscalc') { |
$num_uneditable = 1; |
$num_uneditable = 1; |
$realm = 'Assessment'; |
$realm = 'Assessment'; |
Line 1306 sub outsheet_html {
|
Line 1309 sub outsheet_html {
|
my $tabledata =<<"END"; |
my $tabledata =<<"END"; |
<table border="2"> |
<table border="2"> |
<tr> |
<tr> |
<th colspan="1" rowspan="2"><font size="+2">$realm</font></th> |
<th colspan="2" rowspan="2"><font size="+2">$realm</font></th> |
<td bgcolor="#FFDDDD" colspan="$num_uneditable"> |
<td bgcolor="#FFDDDD" colspan="$num_uneditable"> |
<b><font size="+1">Import</font></b></td> |
<b><font size="+1">Import</font></b></td> |
<td colspan="$num_left"> |
<td colspan="$num_left"> |
Line 1328 END
|
Line 1331 END
|
#################################### |
#################################### |
# Print out template row |
# Print out template row |
#################################### |
#################################### |
my ($rowlabel,@rowdata) = &get_row($sheet,'-'); |
my ($num_cols_output,$row_html,$rowlabel,@rowdata); |
my $row_html = '<tr><td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>'; |
|
my $num_cols_output = 0; |
if (! $requester_is_student) { |
foreach my $cell (@rowdata) { |
($rowlabel,@rowdata) = &get_row($sheet,'-'); |
if ($num_cols_output++ < $num_uneditable) { |
$row_html = '<tr><td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>'; |
$row_html .= '<td bgcolor="#FFDDDD">'; |
$num_cols_output = 0; |
$row_html .= &html_uneditable_cell($cell,'#FFDDDD'); |
foreach my $cell (@rowdata) { |
} else { |
if ($requester_is_student || |
$row_html .= '<td bgcolor="#EOFFDD">'; |
$num_cols_output++ < $num_uneditable) { |
$row_html .= &html_editable_cell($cell,'#E0FFDD'); |
$row_html .= '<td bgcolor="#FFDDDD">'; |
|
$row_html .= &html_uneditable_cell($cell,'#FFDDDD'); |
|
} else { |
|
$row_html .= '<td bgcolor="#EOFFDD">'; |
|
$row_html .= &html_editable_cell($cell,'#E0FFDD'); |
|
} |
|
$row_html .= '</td>'; |
} |
} |
$row_html .= '</td>'; |
$row_html.= "</tr>\n"; |
|
$r->print($row_html); |
} |
} |
$row_html.= "</tr>\n"; |
|
$r->print($row_html); |
|
#################################### |
#################################### |
# Print out summary/export row |
# Print out summary/export row |
#################################### |
#################################### |
Line 1350 END
|
Line 1358 END
|
$row_html = '<tr><td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>'; |
$row_html = '<tr><td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>'; |
$num_cols_output = 0; |
$num_cols_output = 0; |
foreach my $cell (@rowdata) { |
foreach my $cell (@rowdata) { |
if ($num_cols_output++ < 26) { |
if ($num_cols_output++ < 26 && ! $requester_is_student) { |
$row_html .= '<td bgcolor="#CCCCFF">'; |
$row_html .= '<td bgcolor="#CCCCFF">'; |
$row_html .= &html_editable_cell($cell,'#CCCCFF'); |
$row_html .= &html_editable_cell($cell,'#CCCCFF'); |
} else { |
} else { |
$row_html .= '<td bgcolor="#DDCCFF">'; |
$row_html .= '<td bgcolor="#DDCCFF">'; |
$row_html .= &html_uneditable_cell(undef,'#CCCCFF'); |
$row_html .= &html_uneditable_cell($cell,'#CCCCFF'); |
} |
} |
$row_html .= '</td>'; |
$row_html .= '</td>'; |
} |
} |
Line 1432 END
|
Line 1440 END
|
$bgcolor='#FFDDDD' if ($shown_cells < $num_uneditable); |
$bgcolor='#FFDDDD' if ($shown_cells < $num_uneditable); |
# |
# |
$row_html.='<td bgcolor='.$bgcolor.'>'; |
$row_html.='<td bgcolor='.$bgcolor.'>'; |
if ($shown_cells < $num_uneditable) { |
if ($requester_is_student || $shown_cells < $num_uneditable) { |
$row_html .= &html_uneditable_cell($cell,$bgcolor); |
$row_html .= &html_uneditable_cell($cell,$bgcolor); |
} else { |
} else { |
$row_html .= &html_editable_cell($cell,$bgcolor); |
$row_html .= &html_editable_cell($cell,$bgcolor); |
Line 1833 sub readsheet {
|
Line 1841 sub readsheet {
|
} |
} |
%f=%{&parse_sheet(\$sheetxml)}; |
%f=%{&parse_sheet(\$sheetxml)}; |
} else { |
} else { |
my $sheet=''; |
|
my %tmphash = &Apache::lonnet::dump($fn,$cdom,$cnum); |
my %tmphash = &Apache::lonnet::dump($fn,$cdom,$cnum); |
my ($tmp) = keys(%tmphash); |
my ($tmp) = keys(%tmphash); |
unless ($tmp =~ /^(con_lost|error|no_such_host)/i) { |
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
foreach (keys(%tmphash)) { |
foreach (keys(%tmphash)) { |
$f{$_}=$tmphash{$_}; |
$f{$_}=$tmphash{$_}; |
} |
} |
|
} else { |
|
# Unable to grab the specified spreadsheet, |
|
# so we get the default ones instead. |
|
$fn = 'default_'.$stype; |
|
$sheet->{'filename'} = $fn; |
|
my $dfn = $fn; |
|
$dfn =~ s/\_/\./g; |
|
my $sheetxml; |
|
if (my $fh=Apache::File->new($includedir.'/'.$dfn)) { |
|
$sheetxml = join('',<$fh>); |
|
} else { |
|
$sheetxml='<field row="0" col="A">'. |
|
'"Unable to load spreadsheet"</field>'; |
|
} |
|
%f=%{&parse_sheet(\$sheetxml)}; |
} |
} |
} |
} |
# Cache and set |
# Cache and set |
Line 2369 sub updatestudentassesssheet {
|
Line 2391 sub updatestudentassesssheet {
|
unless ((exists($sheet->{'rowlabel'}->{$usy}) && |
unless ((exists($sheet->{'rowlabel'}->{$usy}) && |
(defined($sheet->{'rowlabel'}->{$usy})) || (!$1) || |
(defined($sheet->{'rowlabel'}->{$usy})) || (!$1) || |
($formula =~ /^(~~~|---)/) )) { |
($formula =~ /^(~~~|---)/) )) { |
$f{$_}='!!! Obsolete'; |
$f{$cell}='!!! Obsolete'; |
$changed=1; |
$changed=1; |
} |
} |
} |
} |
Line 2541 sub loadassessment {
|
Line 2563 sub loadassessment {
|
# restore individual |
# restore individual |
# |
# |
%returnhash = &Apache::lonnet::restore($symb,$namespace,$udom,$uname); |
%returnhash = &Apache::lonnet::restore($symb,$namespace,$udom,$uname); |
for (my $version=1;$version<=$returnhash{'version'};$version++) { |
|
foreach (split(/\:/,$returnhash{$version.':keys'})) { |
|
$returnhash{$_}=$returnhash{$version.':'.$_}; |
|
} |
|
} |
|
} |
} |
# |
# |
# returnhash now has all stores for this resource |
# returnhash now has all stores for this resource |
Line 2893 sub cachedssheets {
|
Line 2910 sub cachedssheets {
|
$uname = $uname || $sheet->{'uname'}; |
$uname = $uname || $sheet->{'uname'}; |
$udom = $udom || $sheet->{'udom'}; |
$udom = $udom || $sheet->{'udom'}; |
if (! $loadedcaches{$uname.'_'.$udom}) { |
if (! $loadedcaches{$uname.'_'.$udom}) { |
my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets', |
my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets_'. |
|
$ENV{'request.course.id'}, |
$sheet->{'udom'}, |
$sheet->{'udom'}, |
$sheet->{'uname'}); |
$sheet->{'uname'}); |
if ($tmp[0] !~ /^error/) { |
if ($tmp[0] !~ /^error/) { |
Line 3123 ENDSCRIPT
|
Line 3141 ENDSCRIPT
|
# If a new formula had been entered, go from work copy |
# If a new formula had been entered, go from work copy |
if ($ENV{'form.unewfield'}) { |
if ($ENV{'form.unewfield'}) { |
$r->print('<h2>Modified Workcopy</h2>'); |
$r->print('<h2>Modified Workcopy</h2>'); |
$ENV{'form.unewformula'}=~s/\'/\"/g; |
#$ENV{'form.unewformula'}=~s/\'/\"/g; |
$r->print('<p>Cell '.$ENV{'form.unewfield'}.' = <pre>'); |
$r->print('<p>Cell '.$ENV{'form.unewfield'}.' = <pre>'); |
$r->print(&HTML::Entities::encode($ENV{'form.unewformula'}). |
$r->print(&HTML::Entities::encode($ENV{'form.unewformula'}). |
'</pre></p>'); |
'</pre></p>'); |
Line 3255 ENDSCRIPT
|
Line 3273 ENDSCRIPT
|
} |
} |
$r->print('>'); |
$r->print('>'); |
# |
# |
# CSV format checkbox (classcalc sheets only) |
# output format select box |
$r->print(' Output as <select name="output" size="1" onClick="submit()">'. |
$r->print(' Output as <select name="output" size="1" onChange="submit()">'. |
"\n"); |
"\n"); |
foreach my $mode (qw/HTML CSV Excel/) { |
foreach my $mode (qw/HTML CSV Excel/) { |
$r->print('<option value="'.$mode.'"'); |
$r->print('<option value="'.$mode.'"'); |