--- loncom/interface/loncoursedata.pm 2003/02/14 21:45:19 1.48 +++ loncom/interface/loncoursedata.pm 2003/02/25 15:55:15 1.50 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: loncoursedata.pm,v 1.48 2003/02/14 21:45:19 matthew Exp $ +# $Id: loncoursedata.pm,v 1.50 2003/02/25 15:55:15 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -120,9 +120,10 @@ sub DownloadClasslist { my ($courseDomain,$courseNumber)=split(/\_/,$courseID); my %classlist; - my $modifiedTime = &Apache::lonnet::GetFileTimestamp($courseDomain, $courseNumber, + my $modifiedTime = &Apache::lonnet::GetFileTimestamp($courseDomain, + $courseNumber, 'classlist.db', - $Apache::lonnet::perlvar{'lonUsersDir'}); + $Apache::lonnet::perlvar{'lonUsersDir'}); # Always download the information if lastDownloadTime is set to # Not downloaded, otherwise it is only downloaded if the file @@ -261,7 +262,8 @@ with stopping downloading then can not t # ----- PROCESSING FUNCTIONS --------------------------------------- - +#################################################### +#################################################### =pod @@ -278,19 +280,25 @@ The returned structure is a hash referen symb => 'symb', source => '/s/o/u/r/c/e', type => (container|assessment), + num_assess => 2, # only for container contents => [ {},{},{},{} ], # only for container parts => [11,13,15], # only for assessment - response_ids => [12,14,16] # only for assessment + response_ids => [12,14,16], # only for assessment + contents => [........] # only for container } $hash->{'contents'} is a reference to an array of hashes of the same structure. +Also returned are array references to the sequences and assessments contained +in the course. + + =cut +#################################################### +#################################################### sub get_sequence_assessment_data { - return undef; my $fn=$ENV{'request.course.fn'}; - &Apache::lonnet::logthis('filename = '.$fn); ## ## use navmaps my $navmap = Apache::lonnavmaps::navmap->new($fn.".db",$fn."_parms.db", @@ -312,25 +320,29 @@ sub get_sequence_assessment_data { my $symb = $curRes->symb(); my $src = $curRes->src(); # + my @Sequences; + my @Assessments; my @Nested_Sequences = (); # Stack of sequences, keeps track of depth my $top = { title => $title, symb => $symb, type => 'container', num_assess => 0, contents => [], }; + push (@Sequences,$top); push (@Nested_Sequences, $top); # # We need to keep track of which sequences contain homework problems # + my $previous = $top; while (scalar(@Nested_Sequences)) { + $previous = $curRes; $curRes = $iterator->next(); my $currentmap = $Nested_Sequences[-1]; # Last one on the stack if ($curRes == $iterator->BEGIN_MAP()) { # get the map itself, instead of BEGIN_MAP - $curRes = $iterator->next(); - $title = $curRes->title(); - $symb = $curRes->symb(); - $src = $curRes->src(); + $title = $previous->title();#$curRes->title(); + $symb = $previous->symb;#curRes->symb(); + $src = $previous->src();#$curRes->src(); my $newmap = { title => $title, src => $src, symb => $symb, @@ -339,6 +351,7 @@ sub get_sequence_assessment_data { contents => [], }; push (@{$currentmap->{'contents'}},$newmap); # this is permanent + push (@Sequences,$newmap); push (@Nested_Sequences, $newmap); # this is a stack next; } @@ -347,7 +360,7 @@ sub get_sequence_assessment_data { next; } next if (! ref($curRes)); - next if (! $curRes->is_problem() && !$curRes->randomout); + next if (! $curRes->is_problem());# && !$curRes->randomout); # Okay, from here on out we only deal with assessments $title = $curRes->title(); $symb = $curRes->symb(); @@ -358,12 +371,16 @@ sub get_sequence_assessment_data { symb => $symb, type => 'assessment', }; + push(@Assessments,$assessment); push(@{$currentmap->{'contents'}},$assessment); $currentmap->{'num_assess'}++; } - return $top; + return ($top,\@Sequences,\@Assessments); } +################################################# +################################################# + =pod =item &ProcessTopResourceMap()