\n";
+ $Str .= &Apache::loncommon::end_data_table()."\n";
return $Str;
}
@@ -222,7 +224,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.
@@ -239,31 +241,11 @@ sub MultipleProblemSelector {
# Header
$Str .= <<"END";
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').'';
$Str .= $/.'
'.$/;
- my ($iterator,$sequence_string,@Accumulator);
+ my $iterator = $navmap->getIterator(undef, undef, undef, 1);
+ my $sequence_string;
my $seq_id = 0;
- if (&Apache::loncommon::needs_gci_custom()) {
- my $cdom = $env{'course.'.$cid.'.domain'};
- my $cnum = $env{'course.'.$cid.'.num'};
- my $mapurl = "/uploaded/$cdom/$cnum/default_1261144274.sequence";
- my $map = $navmap->getResourceByUrl($mapurl);
- my $firstResource = $map->map_start();
- my $lastResource = $map->map_finish();
- $iterator = $navmap->getIterator($firstResource,$lastResource,sub { $_[0]->is_problem() },1);
- @Accumulator = (&new_accumulator($map->compTitle,
- $map->src,
- $map->symb,
- $seq_id++,
- $inputname));
- } else {
- $iterator = $navmap->getIterator(undef, undef, undef, 1);
- @Accumulator = (&new_accumulator($env{'course.'.$cid.'.description'},
- '',
- '',
- $seq_id++,
- $inputname));
- }
+ my @Accumulator = (&new_accumulator($env{'course.'.$cid.'.description'},
+ '',
+ '',
+ $seq_id++,
+ $inputname));
my @Sequence_Data;
while (my $curRes = $iterator->next()) {
if ($curRes == $iterator->END_MAP) {
@@ -323,12 +347,27 @@ END
$seq_id++,
$inputname));
} elsif ($curRes->is_problem) {
- my $is_selected;
- if (($env{'form.allproblems'}) || (exists($selected->{$curRes->symb}))) {
- $is_selected = 1;
+ 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,$is_selected);
+ &{$Accumulator[-1]}($curRes,
+ exists($selected->{$curRes->symb}),
+ $anonpart,$namedpart);
}
}
}
@@ -356,20 +395,45 @@ sub new_accumulator {
return
sub {
if (@_) {
- my ($res,$checked) = @_;
+ my ($res,$checked,$anonpart,$namedpart) = @_;
$target.='