--- loncom/interface/statistics/lonproblemanalysis.pm 2004/01/19 21:31:08 1.60
+++ loncom/interface/statistics/lonproblemanalysis.pm 2004/01/20 15:51:06 1.61
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.60 2004/01/19 21:31:08 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.61 2004/01/20 15:51:06 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -115,9 +115,14 @@ sub BuildProblemAnalysisPage {
$r->rflush();
#
# Determine which problem we are to analyze
- my $current_problem = &get_target_from_id($ENV{'form.problemchoice'});
+ my $current_problem = &Apache::lonstathelpers::get_target_from_id
+ ($ENV{'form.problemchoice'});
#
- my ($prev,$curr,$next) = &get_prev_curr_next($current_problem);
+ my ($prev,$curr,$next) =
+ &Apache::lonstathelpers::get_prev_curr_next($current_problem,
+ '(option|radiobutton)',
+ 'response',
+ );
if (exists($ENV{'form.PrevProblemAnalysis'}) && defined($prev)) {
$current_problem = $prev;
} elsif (exists($ENV{'form.NextProblemAnalysis'}) && defined($next)) {
@@ -127,7 +132,8 @@ sub BuildProblemAnalysisPage {
}
#
# Store the current problem choice and send it out in the form
- $ENV{'form.problemchoice'} = &make_target_id($current_problem);
+ $ENV{'form.problemchoice'} =
+ &Apache::lonstathelpers::make_target_id($current_problem);
$r->print('');
#
@@ -161,7 +167,8 @@ sub BuildProblemAnalysisPage {
&mt('Analyze Problem').'" />');
$r->print(' 'x5);
$r->print('
'.&mt('Please select a problem to analyze').'
');
- $r->print(&ProblemSelector());
+ $r->print(&Apache::lonstathelpers::ProblemSelector
+ ('(option|radiobutton)'));
}
}
@@ -1477,180 +1484,6 @@ sub CreateInterface {
return $Str;
}
-sub ProblemSelector {
- my $Str;
- $Str = "\n\n";
- return $Str;
-}
-
-#########################################################
-#########################################################
-##
-## Misc functions
-##
-#########################################################
-#########################################################
-sub get_problem_symb {
- my $problemstring = shift();
- my ($symb,$partid,$respid,$resptype) = split(':',$problemstring);
- return ({ symb => $symb,
- part => $partid,
- respid => $respid,
- type => $resptype } );
-}
-
-sub get_resource_from_symb {
- my ($symb) = @_;
- foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
- foreach my $res (@{$seq->{'contents'}}) {
- if ($res->{'symb'} eq $symb) {
- return $res;
- }
- }
- }
- return undef;
-}
-
-sub get_prev_curr_next {
- my ($target) = @_;
- #
- # Build an array with the data we need to search through
- my @Resource;
- foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
- foreach my $res (@{$seq->{'contents'}}) {
- next if ($res->{'type'} ne 'assessment');
- foreach my $part (@{$res->{'parts'}}) {
- my $partdata = $res->{'partdata'}->{$part};
- for (my $i=0;$i{'ResponseTypes'}});$i++){
- my $respid = $partdata->{'ResponseIds'}->[$i];
- my $resptype = $partdata->{'ResponseTypes'}->[$i];
- next if ($resptype ne 'option' &&
- $resptype ne 'radiobutton');
- push (@Resource,
- { symb => $res->{symb},
- part => $part,
- respid => $partdata->{'ResponseIds'}->[$i],
- resource => $res,
- resptype => $resptype
- } );
- }
- }
- }
- }
- #
- #
- # Get the index of the current situation
- my $curr_idx;
- for ($curr_idx=0;$curr_idx<$#Resource;$curr_idx++) {
- my $curr_item = $Resource[$curr_idx];
- last if ($curr_item->{'symb'} eq $target->{'symb'} &&
- $curr_item->{'part'} eq $target->{'part'} &&
- $curr_item->{'respid'} eq $target->{'respid'} &&
- $curr_item->{'resptype'} eq $target->{'resptype'});
- }
- my $curr_item = $Resource[$curr_idx];
- if ($curr_item->{'symb'} ne $target->{'symb'} ||
- $curr_item->{'part'} ne $target->{'part'} ||
- $curr_item->{'respid'} ne $target->{'respid'} ||
- $curr_item->{'resptype'} ne $target->{'resptype'}){
- # bogus symb - return nothing
- return (undef,undef,undef);
- }
- #
- # Now just pick up the data we need
- my ($prev,$curr,$next);
- if ($curr_idx == 0) {
- $prev = undef;
- $curr = $Resource[$curr_idx ];
- $next = $Resource[$curr_idx+1];
- } elsif ($curr_idx == $#Resource) {
- $prev = $Resource[$curr_idx-1];
- $curr = $Resource[$curr_idx ];
- $next = undef;
- } else {
- $prev = $Resource[$curr_idx-1];
- $curr = $Resource[$curr_idx ];
- $next = $Resource[$curr_idx+1];
- }
- return ($prev,$curr,$next);
-}
-
-sub make_target_id {
- my ($target) = @_;
- my $id = &Apache::lonnet::escape($target->{'symb'}).':'.
- &Apache::lonnet::escape($target->{'part'}).':'.
- &Apache::lonnet::escape($target->{'respid'}).':'.
- &Apache::lonnet::escape($target->{'resptype'});
- return $id;
-}
-
-sub get_target_from_id {
- my ($id) = @_;
- my ($symb,$part,$respid,$resptype) = split(':',$id);
- return ({ symb =>&Apache::lonnet::unescape($symb),
- part =>&Apache::lonnet::unescape($part),
- respid =>&Apache::lonnet::unescape($respid),
- resptype =>&Apache::lonnet::unescape($resptype)});
-}
-
#########################################################
#########################################################
##