version 1.27, 2004/12/08 00:56:00
|
version 1.28, 2005/03/03 17:52:36
|
Line 63 use Apache::lonlocal;
|
Line 63 use Apache::lonlocal;
|
@Apache::studentcalc::ISA = ('Apache::Spreadsheet'); |
@Apache::studentcalc::ISA = ('Apache::Spreadsheet'); |
|
|
my @Sequences = (); |
my @Sequences = (); |
|
my $navmap; |
my %Exportrows = (); |
my %Exportrows = (); |
|
|
my $current_course; |
my $current_course; |
|
|
sub initialize { |
sub initialize { |
&Apache::assesscalc::initialize(); |
|
&initialize_sequence_cache(); |
&initialize_sequence_cache(); |
|
&Apache::assesscalc::initialize($navmap); |
} |
} |
|
|
sub initialize_package { |
sub initialize_package { |
Line 90 sub initialize_sequence_cache {
|
Line 91 sub initialize_sequence_cache {
|
# |
# |
# Set up the sequences and assessments |
# Set up the sequences and assessments |
undef(@Sequences); |
undef(@Sequences); |
my ($top,$sequences,$assessments) = |
undef($navmap); |
&Apache::loncoursedata::get_sequence_assessment_data(); |
$navmap = Apache::lonnavmaps::navmap->new(); |
if (! defined($top) || ! ref($top)) { |
if (!defined($navmap)) { |
# There has been an error, better report it |
&Apache::lonnet::logthis('student spreadsheet:Can not open Coursemap'); |
&Apache::lonnet::logthis('top is undefined (studentcalc.pm)'); |
} |
return; |
my @all_sequences = $navmap->retrieveResources(undef, |
|
sub { shift->is_map(); },1,0,1); |
|
for my $sequence ($navmap->getById('0.0'), @all_sequences) { |
|
if ($navmap->hasResource($sequence,sub { shift->is_problem(); }, 0)){ |
|
push(@Sequences,$sequence); |
|
} |
} |
} |
@Sequences = @{$sequences} if (ref($sequences) eq 'ARRAY'); |
} |
|
|
|
sub get_resources { |
|
my ($seq) = @_; |
|
return () if (! defined($navmap) || ! ref($navmap)); |
|
my @resources = $navmap->retrieveResources($seq, |
|
sub { shift->is_problem(); }, |
|
0,0,0); |
|
return @resources; |
} |
} |
|
|
sub clear_package { |
sub clear_package { |
Line 143 sub parent_link {
|
Line 157 sub parent_link {
|
sub convenience_links { |
sub convenience_links { |
my $self = shift; |
my $self = shift; |
my ($resource) = @_; |
my ($resource) = @_; |
my $result=&Apache::loncommon::submlink('<img src="/adm/lonMisc/subm_button.gif" border="0" />',$self->{'name'},$self->{'domain'},$resource->{'symb'},'LONcatInfo'); |
my $result=&Apache::loncommon::submlink('<img src="/adm/lonMisc/subm_button.gif" border="0" />',$self->{'name'},$self->{'domain'},$resource->symb,'LONcatInfo'); |
$result .= &Apache::loncommon::pgrdlink('<img src="/adm/lonMisc/pgrd_button.gif" border="0" />',$self->{'name'},$self->{'domain'},$resource->{'symb'},'LONcatInfo'); |
$result .= &Apache::loncommon::pgrdlink('<img src="/adm/lonMisc/pgrd_button.gif" border="0" />',$self->{'name'},$self->{'domain'},$resource->symb,'LONcatInfo'); |
$result .= &Apache::loncommon::pprmlink('<img src="/adm/lonMisc/pprm_button.gif" border="0" />',$self->{'name'},$self->{'domain'},$resource->{'symb'},'LONcatInfo'); |
$result .= &Apache::loncommon::pprmlink('<img src="/adm/lonMisc/pprm_button.gif" border="0" />',$self->{'name'},$self->{'domain'},$resource->symb,'LONcatInfo'); |
return $result; |
return $result; |
} |
} |
|
|
Line 248 END
|
Line 262 END
|
&initialize_sequence_cache(); |
&initialize_sequence_cache(); |
} |
} |
foreach my $Sequence (@Sequences) { |
foreach my $Sequence (@Sequences) { |
next if ($Sequence->{'num_assess'} < 1); |
$r->print("<h3>".$Sequence->compTitle."</h3>\n"); |
$r->print("<h3>".$Sequence->{'title'}."</h3>\n"); |
|
$r->print($tableheader); |
$r->print($tableheader); |
foreach my $resource (@{$Sequence->{'contents'}}) { |
foreach my $resource (&get_resources($Sequence)) { |
next if ($resource->{'type'} ne 'assessment'); |
my $rownum = $self->get_row_number_from_key($resource->symb); |
my $rownum = $self->get_row_number_from_key($resource->{'symb'}); |
|
my $assess_filename = $self->{'row_source'}->{$rownum}; |
my $assess_filename = $self->{'row_source'}->{$rownum}; |
my $row_output = '<tr>'; |
my $row_output = '<tr>'; |
if ($editing_is_allowed) { |
if ($editing_is_allowed) { |
Line 263 END
|
Line 275 END
|
'<a href="/adm/assesscalc?sname='.$self->{'name'}. |
'<a href="/adm/assesscalc?sname='.$self->{'name'}. |
'&sdomain='.$self->{'domain'}. |
'&sdomain='.$self->{'domain'}. |
'&filename='.$assess_filename. |
'&filename='.$assess_filename. |
'&usymb='.&Apache::lonnet::escape($resource->{'symb'}). |
'&usymb='.&Apache::lonnet::escape($resource->symb). |
'">'.$resource->{'title'}.'</a><br />'; |
'">'.$resource->compTitle.'</a><br />'; |
$row_output .= &assess_file_selector($rownum, |
$row_output .= &assess_file_selector($rownum, |
$assess_filename, |
$assess_filename, |
\@AssessFileNames). |
\@AssessFileNames). |
'</td>'; |
'</td>'; |
} else { |
} else { |
$row_output .= '<td><a href="'.$resource->{'src'}.'?symb='. |
$row_output .= '<td><a href="'.$resource->src.'?symb='. |
&Apache::lonnet::escape($resource->{'symb'}). |
&Apache::lonnet::escape($resource->symb). |
'">Go To</a>'; |
'">Go To</a>'; |
$row_output .= '</td><td>'.$resource->{'title'}.'</td>'; |
$row_output .= '</td><td>'.$resource->compTitle.'</td>'; |
} |
} |
if ($self->blackout() && $self->{'blackout_rows'}->{$rownum}>0) { |
if ($self->blackout() && $self->{'blackout_rows'}->{$rownum}>0) { |
$row_output .= |
$row_output .= |
Line 361 sub csv_rows {
|
Line 373 sub csv_rows {
|
&initialize_sequence_cache(); |
&initialize_sequence_cache(); |
} |
} |
foreach my $Sequence (@Sequences) { |
foreach my $Sequence (@Sequences) { |
next if ($Sequence->{'num_assess'} < 1); |
foreach my $resource (&get_resources($Sequence)) { |
foreach my $resource (@{$Sequence->{'contents'}}) { |
my $rownum = $self->get_row_number_from_key($resource->symb); |
my $rownum = $self->get_row_number_from_key($resource->{'symb'}); |
my @assessdata = ($Sequence->compTitle, |
my @assessdata = ($Sequence->{'title'}, |
$resource->compTitle); |
$resource->{'title'}); |
|
$self->csv_output_row($filehandle,$rownum,@assessdata); |
$self->csv_output_row($filehandle,$rownum,@assessdata); |
} |
} |
} |
} |
Line 390 sub excel_rows {
|
Line 401 sub excel_rows {
|
&initialize_sequence_cache(); |
&initialize_sequence_cache(); |
} |
} |
foreach my $Sequence (@Sequences) { |
foreach my $Sequence (@Sequences) { |
next if ($Sequence->{'num_assess'} < 1); |
foreach my $resource (&get_resources($Sequence)) { |
foreach my $resource (@{$Sequence->{'contents'}}) { |
my $rownum = $self->get_row_number_from_key($resource->symb); |
my $rownum = $self->get_row_number_from_key($resource->{'symb'}); |
my @assessdata = ($Sequence->compTitle, |
my @assessdata = ($Sequence->{'title'}, |
$resource->compTitle); |
$resource->{'title'}); |
|
$self->excel_output_row($worksheet,$rownum,$rows_output++, |
$self->excel_output_row($worksheet,$rownum,$rows_output++, |
@assessdata); |
@assessdata); |
} |
} |
Line 414 sub get_rows_in_sequence {
|
Line 424 sub get_rows_in_sequence {
|
my $self = shift(); |
my $self = shift(); |
my ($sequence) = @_; |
my ($sequence) = @_; |
my @Rows; |
my @Rows; |
foreach my $resource (@{$sequence->{'contents'}}) { |
my @resources = &get_resources($sequence); |
if ($resource->{'type'} eq 'assessment') { |
foreach my $resource (@resources) { |
my $rownum = $self->get_row_number_from_key($resource->{'symb'}); |
my $rownum = $self->get_row_number_from_key($resource->symb); |
push (@Rows,$rownum); |
push (@Rows,$rownum); |
} |
|
} |
} |
return @Rows; |
return @Rows; |
} |
} |
Line 497 sub compute {
|
Line 506 sub compute {
|
&initialize_sequence_cache(); |
&initialize_sequence_cache(); |
} |
} |
$self->initialize_safe_space(); |
$self->initialize_safe_space(); |
&Apache::assesscalc::initialize_package($self->{'name'},$self->{'domain'}); |
&Apache::assesscalc::initialize_package($self->{'name'},$self->{'domain'}, |
|
$navmap); |
my %f = $self->formulas(); |
my %f = $self->formulas(); |
# |
# |
# Process the formulas list - |
# Process the formulas list - |
# the formula for the A column of a row is symb__&&__filename |
# the formula for the A column of a row is symb__&&__filename |
my %c = $self->constants(); |
my %c = $self->constants(); |
foreach my $seq (@Sequences) { |
foreach my $seq (@Sequences) { |
next if ($seq->{'num_assess'}<1); |
foreach my $resource (&get_resources($seq)) { |
foreach my $resource (@{$seq->{'contents'}}) { |
|
if ($connection->aborted()) { $self->cleanup(); return; } |
if ($connection->aborted()) { $self->cleanup(); return; } |
next if ($resource->{'type'} ne 'assessment'); |
my $rownum = $self->get_row_number_from_key($resource->symb); |
my $rownum = $self->get_row_number_from_key($resource->{'symb'}); |
|
my $cell = 'A'.$rownum; |
my $cell = 'A'.$rownum; |
my $assess_filename = 'Default'; |
my $assess_filename = 'Default'; |
if (exists($self->{'row_source'}->{$rownum})) { |
if (exists($self->{'row_source'}->{$rownum})) { |
Line 516 sub compute {
|
Line 524 sub compute {
|
} else { |
} else { |
$self->{'row_source'}->{$rownum} = $assess_filename; |
$self->{'row_source'}->{$rownum} = $assess_filename; |
} |
} |
$f{$cell} = $resource->{'symb'}.'__&&&__'.$assess_filename; |
$f{$cell} = $resource->symb.'__&&&__'.$assess_filename; |
if ($connection->aborted()) { $self->cleanup(); return; } |
if ($connection->aborted()) { $self->cleanup(); return; } |
my $assessSheet; |
my $assessSheet; |
$assessSheet = Apache::assesscalc->new($self->{'name'}, |
$assessSheet = Apache::assesscalc->new($self->{'name'}, |
$self->{'domain'}, |
$self->{'domain'}, |
$assess_filename, |
$assess_filename, |
$resource->{'symb'}); |
$resource->symb); |
my @exportdata = $assessSheet->export_data($r); |
my @exportdata = $assessSheet->export_data($r); |
# |
# |
if ($assessSheet->badcalc()) { |
if ($assessSheet->badcalc()) { |