--- loncom/interface/statistics/lonstathelpers.pm 2010/06/10 16:14:39 1.62
+++ loncom/interface/statistics/lonstathelpers.pm 2011/03/12 02:58:49 1.65
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstathelpers.pm,v 1.62 2010/06/10 16:14:39 bisitz Exp $
+# $Id: lonstathelpers.pm,v 1.65 2011/03/12 02:58:49 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -135,9 +135,20 @@ Skips 'survey' problems.
####################################################
####################################################
sub problem_selector {
- my ($AcceptedResponseTypes,$sequence_addendum,$symbmode) = @_;
+ my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,$smallbox,$onclick) = @_;
+# all: also make sequences selectable
+# prefix: prefix for all form names
+# smallbox: use smaller box
+# onclick: javascript to execute when clicked
my $Str;
- $Str = &Apache::loncommon::start_data_table();
+ my $jsadd='';
+ if ($onclick) {
+ $jsadd="onClick='$onclick'";
+ }
+ $Str = &Apache::loncommon::start_scrollbox(($smallbox?'520px':'620px'),
+ ($smallbox?'500px':'600px'),
+ ($smallbox?'50px':'300px')).
+ &Apache::loncommon::start_data_table();
my $rb_count =0;
my ($navmap,@sequences) =
&Apache::lonstatistics::selected_sequences_with_assessments('all');
@@ -166,10 +177,12 @@ sub problem_selector {
}
$seq_str .= &Apache::loncommon::start_data_table_row().
($symbmode?
- '
'
+ '
'
:qq{
}).
- '
'.
- '
';
+ '
'.
+ '
';
if (scalar(@response_ids) > 1) {
$seq_str .= &mt('response').' '.$respid;
}
@@ -184,7 +197,9 @@ sub problem_selector {
}
if ($seq_str ne '') {
$Str .= &Apache::loncommon::start_data_table_header_row().
- '
'.$seq->compTitle.'
'.
+ '
'.
+ ($all?'':'').
+ $seq->compTitle.'
'.
&Apache::loncommon::end_data_table_header_row()."\n".$seq_str;
if (defined($sequence_addendum)) {
$Str .= &Apache::loncommon::start_data_table_header_row().
@@ -193,8 +208,9 @@ sub problem_selector {
&Apache::loncommon::end_data_table_header_row()."\n";
}
}
+
}
- $Str .= &Apache::loncommon::end_data_table()."\n";
+ $Str .= &Apache::loncommon::end_data_table().&Apache::loncommon::end_scrollbox()."\n";
return $Str;
}
@@ -224,7 +240,7 @@ and their contents. A checkbox is provi
####################################################
####################################################
sub MultipleProblemSelector {
- my ($navmap,$inputname,$formname)=@_;
+ my ($navmap,$inputname,$formname,$anoncounter)=@_;
my $cid = $env{'request.course.id'};
my $Str;
# Massage the input as needed.
@@ -259,7 +275,64 @@ sub MultipleProblemSelector {
}
END
- $Str .=
+ my $checkanonjs = <<"END";
+
+
+
+END
+ if (ref($anoncounter) eq 'HASH') {
+ if (keys(%{$anoncounter}) > 0) {
+ my $anonwarning = &mt('Your selection includes both problems with and without anonymous submissions.').'\n'.&mt('You must select either only anonymous or only named problems.').'\n\n'.&mt('If a selection contains both anonymous and named parts, [_1]use the Anoymous/Named buttons to ensure selections will be either all anonymous [_1]or all named.','\n');
+ $checkanonjs = <<"END";
+
+
+
+END
+ }
+ }
+ $Str .= $checkanonjs.
''.&mt('Select All').''.
(' 'x4).
''.&mt('Unselect All').'';
@@ -290,9 +363,27 @@ END
$seq_id++,
$inputname));
} elsif ($curRes->is_problem) {
+ my $anonpart = 0;
+ my $namedpart = 0;
+ my @parts = @{$curRes->parts()};
+ if (ref($anoncounter) eq 'HASH') {
+ if (keys(%{$anoncounter}) > 0) {
+ my @parts = @{$curRes->parts()};
+ my $symb = $curRes->symb();
+ foreach my $part (@parts) {
+ if ((exists($anoncounter->{$symb."\0".$part})) ||
+ $curRes->is_anonsurvey($part)) {
+ $anonpart ++;
+ } else {
+ $namedpart ++
+ }
+ }
+ }
+ }
if (@Accumulator && $Accumulator[-1] ne '') {
&{$Accumulator[-1]}($curRes,
- exists($selected->{$curRes->symb}));
+ exists($selected->{$curRes->symb}),
+ $anonpart,$namedpart);
}
}
}
@@ -320,20 +411,45 @@ sub new_accumulator {
return
sub {
if (@_) {
- my ($res,$checked) = @_;
+ my ($res,$checked,$anonpart,$namedpart) = @_;
$target.='