version 1.196, 2006/11/07 21:31:22
|
version 1.197, 2006/11/09 17:50:51
|
Line 1051 DONEBUTTON
|
Line 1051 DONEBUTTON
|
} |
} |
} |
} |
$status.='</div>'; |
$status.='</div>'; |
my $man_count=0; |
|
my $man_passed=0; |
|
my $opt_count=0; |
|
my $opt_passed=0; |
|
my $dim = $top; |
my $dim = $top; |
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
my %counts = &get_counts($dim,undef,$parstack, |
my $status = &get_criteria('status',$version,$dim,$id); |
$safeeval); |
if ($dimension{$dim}{'criteria.'.$id.'.mandatory'} |
$status.="\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'><p>". |
eq 'N') { |
&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you passed [_4].', |
$opt_count++; |
$counts{'man'},$counts{'opt_req'}, |
if ($status eq 'pass') { |
$counts{'opt'},$counts{'opt_passed'}). |
$opt_passed++; |
"</p></div>\n"; |
} |
|
} else { |
|
$man_count++; |
|
if ($status eq 'pass') { $man_passed++; } |
|
} |
|
} |
|
if ($man_passed eq $man_count) { $man_passed='all'; } |
|
|
|
my $opt_req=&Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($opt_req !~ /\S/) { $opt_req='0'; } |
|
|
|
$status.="\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'>".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you passed [_4].',$man_count,$opt_req,$opt_count,$opt_passed)."</p></div>\n"; |
|
|
|
|
|
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
Line 2098 sub start_Dimension {
|
Line 2081 sub start_Dimension {
|
push(@{$dimension{$previous_dim}{'criterias'}},$dim); |
push(@{$dimension{$previous_dim}{'criterias'}},$dim); |
$dimension{$dim}{'nested'}=$previous_dim; |
$dimension{$dim}{'nested'}=$previous_dim; |
$dimension{$dim}{'depth'} = 1 + $dimension{$previous_dim}{'depth'}; |
$dimension{$dim}{'depth'} = 1 + $dimension{$previous_dim}{'depth'}; |
|
|
&Apache::lonxml::debug("adding $dim as criteria to $previous_dim"); |
&Apache::lonxml::debug("adding $dim as criteria to $previous_dim"); |
} else { |
} else { |
$dimension{$top}{'depth'}=0; |
$dimension{$top}{'depth'}=0; |
Line 2230 sub end_Dimension {
|
Line 2214 sub end_Dimension {
|
} |
} |
my $dim_info="<div class='LC_$dim_status LC_question_grade'>\n"; |
my $dim_info="<div class='LC_$dim_status LC_question_grade'>\n"; |
my $question = ('sub' x $dimension{$dim}{'depth'}).'question'; |
my $question = ('sub' x $dimension{$dim}{'depth'}).'question'; |
my $ucquestion = $question; |
$question =~ s/^(.)/uc($1)/e; |
$ucquestion =~ s/^(.)/uc($1)/e; |
|
if ($dim_status eq 'pass') { |
if ($dim_status eq 'pass') { |
$dim_info.='<h3>'.$ucquestion.' : you passed this '.$mandatory.' '.$question.'</h3>'; |
$dim_info.='<h3>'.$question.' : you passed this '.$mandatory.' question</h3>'; |
} |
} |
if ($dim_status eq 'fail') { |
if ($dim_status eq 'fail') { |
$dim_info.='<h3>'.$ucquestion.' : you did not pass this '.$mandatory.' '.$question.'</h3>'; |
$dim_info.='<h3>'.$question.' : you did not pass this '.$mandatory.' question</h3>'; |
} |
|
my $man_count=0; |
|
my $man_passed=0; |
|
my $opt_count=0; |
|
my $opt_passed=0; |
|
foreach my $id ( @{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}} ) { |
|
my $status = &get_criteria('status',$version,$dim,$id); |
|
if ($dimension{$dim}{'criteria.'.$id.'.mandatory'} |
|
eq 'N') { |
|
$opt_count++; |
|
if ($status eq 'pass') { $opt_passed++; } |
|
} else { |
|
$man_count++; |
|
if ($status eq 'pass') { $man_passed++; } |
|
} |
|
} |
|
if ($man_passed eq $man_count) { $man_passed='all'; } |
|
|
|
my $opt_req=$dimension{$dim}{$instance.'.optionalrequired'}; |
|
if ($opt_req !~ /\S/) { |
|
$opt_req= |
|
&Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($opt_req !~ /\S/) { $opt_req = 0; } |
|
} |
} |
$dim_info.="\n<p>".&mt('You passed [_1] of the [_2] mandatory components and [_3] of the [_4] optional components, of which you were required to pass [_5].',$man_passed,$man_count,$opt_passed,$opt_count,$opt_req)."</p>\n</div>"; |
my %counts = &get_counts($dim,$instance,$parstack, |
|
$safeeval); |
|
|
|
$dim_info.="\n<p>" |
|
.&question_status_message(\%counts, |
|
$dimension{$dim}{'depth'}) |
|
."</p>\n</div>"; |
|
|
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}}, |
@{$dimension{$dim}{'criterias'}}) { |
@{$dimension{$dim}{'criterias'}}) { |
Line 2387 sub end_Dimension {
|
Line 2351 sub end_Dimension {
|
return $result; |
return $result; |
} |
} |
|
|
|
sub status_message { |
|
my ($counts,$depth) = @_; |
|
my %req = ('man' => 'mandatory', |
|
'opt' => 'optional',); |
|
my %type = ('cri' => 'criteria', |
|
'dim' => ('sub'x($depth+1)).'questions',); |
|
my @sections; |
|
foreach my $req ('man','opt') { |
|
foreach my $type ('cri','dim') { |
|
if ($counts->{$req.'_'.$type}) { |
|
push(@sections, |
|
$counts->{$req.'_'.$type.'_passed'}.' of '. |
|
$counts->{$req.'_'.$type}.' '. |
|
$req{$req}.' '.$type{$type}); |
|
} |
|
} |
|
} |
|
|
|
my $status = 'You passed '; |
|
if (@sections == -1) { |
|
} elsif (@sections == 1) { |
|
$status .= $sections[0]; |
|
} elsif (@sections == 2) { |
|
$status .= $sections[0].' and '.$sections[1]; |
|
} else { |
|
my $last = pop(@sections); |
|
$status .= join(', ',@sections).', and '.$last; |
|
} |
|
$status .= '.'; |
|
if ($counts->{'opt'}) { |
|
$status .= ' You were required to pass '.$counts->{'opt_req'}. |
|
' optional component'.($counts->{'opt_req'} == 1?'':'s'); |
|
} |
|
return $status; |
|
} |
|
|
|
sub get_counts { |
|
my ($dim,$instance,$parstack,$safeeval) = @_; |
|
my %counts; |
|
my @possible = ('man_cri','man_dim', |
|
'opt_cri','opt_dim', |
|
'man_cri_passed', 'man_dim_passed', |
|
'opt_cri_passed', 'opt_dim_passed', |
|
'man_passed', |
|
'opt_passed', |
|
'opt_req'); |
|
foreach my $which (@possible) { $counts{$which} = 0; } |
|
|
|
my $version = &get_version(); |
|
|
|
foreach my $id ( @{$dimension{$dim}{$instance.'.criterias'}}, |
|
@{$dimension{$dim}{'criterias'}} ) { |
|
my $status = &get_criteria('status',$version,$dim,$id); |
|
my $which; |
|
if ($dimension{$dim}{'criteria.'.$id.'.mandatory'} |
|
eq 'N') { |
|
$which = 'opt'; |
|
} else { |
|
$which = 'man'; |
|
} |
|
$counts{$which}++; |
|
if ($status eq 'pass') { $counts{$which.'_passed'}++; } |
|
if ($dimension{$dim}{'criteria.'.$id.'.type'} |
|
eq 'dimension') { |
|
$which .= '_dim'; |
|
} else { |
|
$which .= '_cri'; |
|
} |
|
$counts{$which}++; |
|
if ($status eq 'pass') { $counts{$which.'_passed'}++; } |
|
|
|
|
|
} |
|
if ($counts{'man_dim_passed'} eq $counts{'man_dim'}) { |
|
$counts{'man_dim_passed'}='all'; |
|
} |
|
if ($counts{'man_cri_passed'} eq $counts{'man_cri'}) { |
|
$counts{'man_cri_passed'}='all'; |
|
} |
|
|
|
$counts{'opt_req'}=$dimension{$dim}{$instance.'.optionalrequired'}; |
|
if ($counts{'opt_req'} !~ /\S/) { |
|
$counts{'opt_req'}= &Apache::lonxml::get_param('OptionalRequired', |
|
$parstack,$safeeval); |
|
if ($counts{'opt_req'} !~ /\S/) { $counts{'opt_req'} = 0; } |
|
} |
|
return %counts; |
|
} |
|
|
sub end_Setup { |
sub end_Setup { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result=&Apache::lonxml::endredirection(); |
my $result=&Apache::lonxml::endredirection(); |