[LON-CAPA-cvs] cvs: loncom /interface loncoursedata.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Thu, 13 Feb 2003 14:49:16 -0000
matthew Thu Feb 13 09:49:16 2003 EDT
Modified files:
/loncom/interface loncoursedata.pm
Log:
Added &get_sequence_assessment_data(), which is entirely experimental and
should not be used at this time.
Index: loncom/interface/loncoursedata.pm
diff -u loncom/interface/loncoursedata.pm:1.44 loncom/interface/loncoursedata.pm:1.45
--- loncom/interface/loncoursedata.pm:1.44 Tue Feb 4 20:39:32 2003
+++ loncom/interface/loncoursedata.pm Thu Feb 13 09:49:16 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: loncoursedata.pm,v 1.44 2003/02/05 01:39:32 albertel Exp $
+# $Id: loncoursedata.pm,v 1.45 2003/02/13 14:49:16 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -261,6 +261,108 @@
# ----- PROCESSING FUNCTIONS ---------------------------------------
+
+
+=pod
+
+=item &get_sequence_assessment_data()
+
+AT THIS TIME THE USE OF THIS FUNCTION IS *NOT* RECOMMENDED
+
+Use lonnavmaps to build a data structure describing the order and
+assessment contents of each sequence in the current course.
+
+The returned structure is a hash reference.
+
+{ title => 'title',
+ symb => 'symb',
+ source => '/s/o/u/r/c/e',
+ type => (container|assessment),
+ contents => [ {},{},{},{} ], # only for container
+ parts => [11,13,15], # only for assessment
+ response_ids => [12,14,16] # only for assessment
+}
+
+$hash->{'contents'} is a reference to an array of hashes of the same structure.
+
+=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.".bd",$fn."_parms.db",1,0);
+ if (!defined($navmap)) {
+ return 'Can not open Coursemap';
+ }
+ my $iterator = $navmap->getIterator(undef, undef, undef, 1);
+ ##
+ ## Prime the pump
+ ##
+ ## We are going to loop until we run out of sequences/pages to explore for
+ ## resources. This means we have to start out with something to look
+ ## at.
+ my $curRes = $iterator->next(); # BEGIN_MAP
+ $curRes = $iterator->next(); # The sequence itself
+ #
+ my $title = $curRes->title();
+ my $symb = $curRes->symb();
+ my $src = $curRes->src();
+ #
+ my @Nested_Sequences = (); # Stack of sequences, keeps track of depth
+ my $top = { title => $title,
+ symb => $symb,
+ type => 'container',
+ num_assess => 0,
+ contents => [], };
+ push (@Nested_Sequences, $top);
+ #
+ # We need to keep track of which sequences contain homework problems
+ #
+ while (scalar(@Nested_Sequences)) {
+ $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();
+ my $newmap = { title => $title,
+ src => $src,
+ symb => $symb,
+ type => 'container',
+ num_assess => 0,
+ contents => [],
+ };
+ push (@{$currentmap->{'contents'}},$newmap); # this is permanent
+ push (@Nested_Sequences, $newmap); # this is a stack
+ next;
+ }
+ if ($curRes == $iterator->END_MAP()) {
+ pop(@Nested_Sequences);
+ next;
+ }
+ next if (! ref($curRes));
+ next if (! $curRes->is_problem() && !$curRes->randomout);
+ # Okay, from here on out we only deal with assessments
+ $title = $curRes->title();
+ $symb = $curRes->symb();
+ $src = $curRes->src();
+ my $parts = $curRes->parts();
+ my $assessment = { title => $title,
+ src => $src,
+ symb => $symb,
+ type => 'assessment',
+ };
+ push(@{$currentmap->{'contents'}},$assessment);
+ $currentmap->{'num_assess'}++;
+ }
+ return $top;
+}
+
=pod
=item &ProcessTopResourceMap()
@@ -1251,7 +1353,7 @@
my $WhatIWant;
$WhatIWant = '(^version:|';
$WhatIWant .= '^\d+:.+?:(resource\.\d+\.';
- $WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))\s*$';
+ $WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))\s*$';#'
$WhatIWant .= '|timestamp)';
$WhatIWant .= ')';