--- loncom/interface/statistics/lonstathelpers.pm 2011/07/04 09:25:02 1.67 +++ loncom/interface/statistics/lonstathelpers.pm 2017/12/18 23:51:19 1.75 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonstathelpers.pm,v 1.67 2011/07/04 09:25:02 foxr Exp $ +# $Id: lonstathelpers.pm,v 1.75 2017/12/18 23:51:19 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -90,10 +90,10 @@ sub render_resource { my $rendered_problem = &Apache::lonnet::ssi_body($src.'?symb='.$symb); $rendered_problem =~ s/<\s*form\s*/)|<\/nop>|g; - return '
'. - ''. - $rendered_problem. - '
'; + return '
'. + '

'.&mt('Problem').'

'. + ''.$rendered_problem. + '
'; } #################################################### @@ -108,10 +108,17 @@ sub render_resource { #################################################### #################################################### sub get_resources { - my ($navmap,$sequence) = @_; - my @resources = $navmap->retrieveResources($sequence, - sub { shift->is_problem(); }, - 0,0,0); + my ($navmap,$sequence,$include_tools) = @_; + my @resources; + if ($include_tools) { + @resources = $navmap->retrieveResources($sequence, + sub { shift->is_gradable(); }, + 0,0,0); + } else { + @resources = $navmap->retrieveResources($sequence, + sub { shift->is_problem(); }, + 0,0,0); + } return @resources; } @@ -135,7 +142,8 @@ Skips 'survey' problems. #################################################### #################################################### sub problem_selector { - my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,$smallbox,$onclick) = @_; + my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,$smallbox,$onclick, + $include_tools) = @_; # all: also make sequences selectable # prefix: prefix for all form names # smallbox: use smaller box @@ -143,7 +151,7 @@ sub problem_selector { my $Str; my $jsadd=''; if ($onclick) { - $jsadd="onClick='$onclick'"; + $jsadd="onclick='$onclick'"; } $Str = &Apache::loncommon::start_scrollbox(($smallbox?'420px':'620px'), ($smallbox?'400px':'600px'), @@ -155,10 +163,16 @@ sub problem_selector { return $navmap if (! ref($navmap)); # error foreach my $seq (@sequences) { my $seq_str = ''; - foreach my $res (&get_resources($navmap,$seq)) { + foreach my $res (&get_resources($navmap,$seq,$include_tools)) { foreach my $part (@{$res->parts}) { - my @response_ids = $res->responseIds($part); - my @response_types = $res->responseType($part); + my (@response_ids,@response_types); + if ($res->is_tool) { + @response_ids = (); + @response_types = ('tool'); + } else { + @response_ids = $res->responseIds($part); + @response_types = $res->responseType($part); + } for (my $i=0;$i 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'); + 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 Anonymous/Named buttons to ensure selections will be either all anonymous[_1]or all named.',"\n"); + &js_escape(\$anonwarning); $checkanonjs = <<"END";