--- loncom/interface/spreadsheet/studentcalc.pm 2006/04/06 20:24:13 1.38 +++ loncom/interface/spreadsheet/studentcalc.pm 2017/12/31 15:27:03 1.47 @@ -1,5 +1,5 @@ # -# $Id: studentcalc.pm,v 1.38 2006/04/06 20:24:13 raeburn Exp $ +# $Id: studentcalc.pm,v 1.47 2017/12/31 15:27:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -59,6 +59,8 @@ use Apache::assesscalc(); use HTML::Entities(); use Time::HiRes; use Apache::lonlocal; +use LONCAPA; + @Apache::studentcalc::ISA = ('Apache::Spreadsheet'); @@ -98,11 +100,15 @@ sub initialize_sequence_cache { } 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); - &get_resources($sequence); - } + my $toplevelseq = $navmap->getById('0.0'); + if (!grep(/^\Q$toplevelseq\E$/,@all_sequences)) { + unshift(@all_sequences,$toplevelseq); + } + foreach my $sequence (@all_sequences) { + if ($navmap->hasResource($sequence,sub { shift->is_gradable(); }, 0,1)){ + push(@Sequences,$sequence); + &get_resources($sequence); + } } } @@ -114,8 +120,8 @@ sub get_resources { } return () if (! defined($navmap) || ! ref($navmap)); my @resources = $navmap->retrieveResources($seq, - sub { shift->is_problem(); }, - 0,0,0); + sub { shift->is_gradable(); }, + 0,0,1); $res_memoize{$seq->symb()}=\@resources; return @resources; } @@ -221,16 +227,16 @@ END } $tableheader .="\n"; if ($self->blackout()) { - $r->print('

'. + $r->print('

'. &mt('Some computations are not available at this time.').'
'. &mt('There are problems whose status you are not allowed to view.'). - '

'."\n"); + '

'."\n"); } else { $r->print($tableheader); # # Print out template row if (exists($env{'request.role.adv'}) && $env{'request.role.adv'}) { - $r->print('Template '. + $r->print(''.&mt('Template').' '. $self->html_template_row($num_uneditable, $importcolor)."\n"); } @@ -292,7 +298,7 @@ END ''.$resource->compTitle.'
'; $row_output .= &assess_file_selector($rownum, $assess_filename, @@ -300,8 +306,8 @@ END ''; } else { $row_output .= 'Go To'; + &escape($resource->symb). + '">'.&mt('Go To').''; $row_output .= ''.$resource->compTitle.''; } if ($self->blackout() && $self->{'blackout_rows'}->{$rownum}>0) { @@ -397,6 +403,8 @@ sub modify_cell { $self->set_formula($cell,$formula); } elsif ($cell !~ /^([A-z](\d+)|template_[A-z])$/) { return; + } else { + $self->set_formula($cell,$formula); } $self->rebuild_stats(); return; @@ -549,7 +557,7 @@ sub compute { } $self->initialize_safe_space(); &Apache::assesscalc::initialize_package($self->{'name'},$self->{'domain'}, - $navmap); + $navmap,$self); my %f = $self->formulas(); # # Process the formulas list - @@ -572,7 +580,7 @@ sub compute { $assess_filename, $resource->symb, $self->{'section'}, - $self->{'group'}); + $self->{'groups'}); my @exportdata = $assessSheet->export_data($r); # if ($assessSheet->badcalc()) {