version 1.50, 2003/02/25 15:55:15
|
version 1.55, 2003/03/03 21:52:24
|
Line 1
|
Line 1
|
# The LearningOnline Network with CAPA |
# The LearningOnline Network with CAPA |
# (Publication Handler |
|
# |
# |
# $Id$ |
# $Id$ |
# |
# |
Line 281 The returned structure is a hash referen
|
Line 280 The returned structure is a hash referen
|
source => '/s/o/u/r/c/e', |
source => '/s/o/u/r/c/e', |
type => (container|assessment), |
type => (container|assessment), |
num_assess => 2, # only for container |
num_assess => 2, # only for container |
contents => [ {},{},{},{} ], # only for container |
|
parts => [11,13,15], # only for assessment |
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 |
contents => [........] # only for container |
Line 313 sub get_sequence_assessment_data {
|
Line 311 sub get_sequence_assessment_data {
|
## We are going to loop until we run out of sequences/pages to explore for |
## 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 |
## resources. This means we have to start out with something to look |
## at. |
## at. |
my $curRes = $iterator->next(); # BEGIN_MAP |
my $title = $ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
$curRes = $iterator->next(); # The sequence itself |
my $symb = 'top'; |
# |
my $src = 'not applicable'; |
my $title = $curRes->title(); |
|
my $symb = $curRes->symb(); |
|
my $src = $curRes->src(); |
|
# |
# |
my @Sequences; |
my @Sequences; |
my @Assessments; |
my @Assessments; |
my @Nested_Sequences = (); # Stack of sequences, keeps track of depth |
my @Nested_Sequences = (); # Stack of sequences, keeps track of depth |
my $top = { title => $title, |
my $top = { title => $title, |
|
src => $src, |
symb => $symb, |
symb => $symb, |
type => 'container', |
type => 'container', |
num_assess => 0, |
num_assess => 0, |
|
num_assess_parts => 0, |
contents => [], }; |
contents => [], }; |
push (@Sequences,$top); |
push (@Sequences,$top); |
push (@Nested_Sequences, $top); |
push (@Nested_Sequences, $top); |
# |
# |
# We need to keep track of which sequences contain homework problems |
# We need to keep track of which sequences contain homework problems |
# |
# |
my $previous = $top; |
my $previous; |
|
my $curRes = $iterator->next(); # BEGIN_MAP |
|
$curRes = $iterator->next(); # The first item in the top level map. |
while (scalar(@Nested_Sequences)) { |
while (scalar(@Nested_Sequences)) { |
$previous = $curRes; |
$previous = $curRes; |
$curRes = $iterator->next(); |
$curRes = $iterator->next(); |
my $currentmap = $Nested_Sequences[-1]; # Last one on the stack |
my $currentmap = $Nested_Sequences[-1]; # Last one on the stack |
if ($curRes == $iterator->BEGIN_MAP()) { |
if ($curRes == $iterator->BEGIN_MAP()) { |
# get the map itself, instead of BEGIN_MAP |
# get the map itself, instead of BEGIN_MAP |
$title = $previous->title();#$curRes->title(); |
$title = $previous->title(); |
$symb = $previous->symb;#curRes->symb(); |
$symb = $previous->symb(); |
$src = $previous->src();#$curRes->src(); |
$src = $previous->src(); |
my $newmap = { title => $title, |
my $newmap = { title => $title, |
src => $src, |
src => $src, |
symb => $symb, |
symb => $symb, |
Line 370 sub get_sequence_assessment_data {
|
Line 369 sub get_sequence_assessment_data {
|
src => $src, |
src => $src, |
symb => $symb, |
symb => $symb, |
type => 'assessment', |
type => 'assessment', |
|
parts => $parts, |
|
num_parts => scalar(@$parts), |
}; |
}; |
push(@Assessments,$assessment); |
push(@Assessments,$assessment); |
push(@{$currentmap->{'contents'}},$assessment); |
push(@{$currentmap->{'contents'}},$assessment); |
$currentmap->{'num_assess'}++; |
$currentmap->{'num_assess'}++; |
|
$currentmap->{'num_assess_parts'}+= scalar(@$parts); |
} |
} |
return ($top,\@Sequences,\@Assessments); |
return ($top,\@Sequences,\@Assessments); |
} |
} |
Line 1306 sub DownloadStudentCourseData {
|
Line 1308 sub DownloadStudentCourseData {
|
$WhatIWant .= ')'; |
$WhatIWant .= ')'; |
# $WhatIWant = '.'; |
# $WhatIWant = '.'; |
|
|
|
my %prog_state; |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
%prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title, |
|
$heading,($#$students)+1); |
} |
} |
|
|
my $displayString; |
|
my $count=0; |
|
foreach (@$students) { |
foreach (@$students) { |
my %cache; |
my %cache; |
|
|
if($c->aborted()) { return 'Aborted'; } |
if($c->aborted()) { return 'Aborted'; } |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
$count++; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
my $displayString = $count.'/'.$studentCount.': '.$_; |
'last student '.$_); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
|
} |
} |
|
|
my $downloadTime='Not downloaded'; |
my $downloadTime='Not downloaded'; |
Line 1357 sub DownloadStudentCourseData {
|
Line 1358 sub DownloadStudentCourseData {
|
next; |
next; |
} |
} |
} |
} |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); } |
|
|
return 'OK'; |
return 'OK'; |
} |
} |
Line 1378 sub DownloadStudentCourseDataSeparate {
|
Line 1379 sub DownloadStudentCourseDataSeparate {
|
&CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c); |
&CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c); |
|
|
my $studentCount = scalar(@$students); |
my $studentCount = scalar(@$students); |
|
my %prog_state; |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
%prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title, |
|
$heading,($#$students)+1); |
} |
} |
my $count=0; |
|
my $displayString=''; |
my $displayString=''; |
foreach (@$students) { |
foreach (@$students) { |
if($c->aborted()) { |
if($c->aborted()) { |
Line 1389 sub DownloadStudentCourseDataSeparate {
|
Line 1391 sub DownloadStudentCourseDataSeparate {
|
} |
} |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
$count++; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
$displayString = $count.'/'.$studentCount.': '.$_; |
'last student '.$_); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
|
} |
} |
|
|
my %cache; |
my %cache; |
Line 1436 sub DownloadStudentCourseDataSeparate {
|
Line 1437 sub DownloadStudentCourseDataSeparate {
|
} |
} |
untie(%downloadData); |
untie(%downloadData); |
} |
} |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r, |
|
\%prog_state); } |
|
|
return &CheckForResidualDownload($cacheDB, 'true', 'true', |
return &CheckForResidualDownload($cacheDB, 'true', 'true', |
$courseID, $r, $c); |
$courseID, $r, $c); |
Line 1475 sub CheckForResidualDownload {
|
Line 1477 sub CheckForResidualDownload {
|
my $heading = 'Process Course Data'; |
my $heading = 'Process Course Data'; |
my $title = 'LON-CAPA Statistics'; |
my $title = 'LON-CAPA Statistics'; |
my $studentCount = scalar(@students); |
my $studentCount = scalar(@students); |
|
my %prog_state; |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
%prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title, |
|
$heading,$#students+1); |
} |
} |
|
|
my $count=1; |
my $count=1; |
Line 1484 sub CheckForResidualDownload {
|
Line 1488 sub CheckForResidualDownload {
|
last if($c->aborted()); |
last if($c->aborted()); |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
my $displayString = $count.'/'.$studentCount.': '.$name; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
'last student '.$name); |
} |
} |
|
|
if($extract eq 'true') { |
if($extract eq 'true') { |
Line 1496 sub CheckForResidualDownload {
|
Line 1500 sub CheckForResidualDownload {
|
$count++; |
$count++; |
} |
} |
|
|
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r, |
|
\%prog_state); } |
|
|
untie(%cache); |
untie(%cache); |
untie(%downloadData); |
untie(%downloadData); |
Line 1685 $ENV{'course.'.$cid.'.domain'}, and $ENV
|
Line 1690 $ENV{'course.'.$cid.'.domain'}, and $ENV
|
|
|
Returns a reference to a hash which contains: |
Returns a reference to a hash which contains: |
keys '$sname:$sdom' |
keys '$sname:$sdom' |
values [$end,$start,$id,$section,$fullname] |
values [$sdom,$sname,$end,$start,$id,$section,$fullname,$status] |
|
|
|
The constant values CL_SDOM, CL_SNAME, CL_END, etc. can be used |
|
as indices into the returned list to future-proof clients against |
|
changes in the list order. |
|
|
=cut |
=cut |
|
|
################################################ |
################################################ |
################################################ |
################################################ |
|
|
|
sub CL_SDOM { return 0; } |
|
sub CL_SNAME { return 1; } |
|
sub CL_END { return 2; } |
|
sub CL_START { return 3; } |
|
sub CL_ID { return 4; } |
|
sub CL_SECTION { return 5; } |
|
sub CL_FULLNAME { return 6; } |
|
sub CL_STATUS { return 7; } |
|
|
sub get_classlist { |
sub get_classlist { |
my ($cid,$cdom,$cnum) = @_; |
my ($cid,$cdom,$cnum) = @_; |
$cid = $cid || $ENV{'request.course.id'}; |
$cid = $cid || $ENV{'request.course.id'}; |