version 1.74, 2005/11/03 21:29:57
|
version 1.76, 2005/11/04 15:31:53
|
Line 1427 sub start_Dimension {
|
Line 1427 sub start_Dimension {
|
} |
} |
|
|
sub get_instance { |
sub get_instance { |
&Apache::response::pushrandomnumber(); |
my ($dim)=@_; |
my @order=&Math::Random::random_permutation(@{$dimension{'instances'}}); |
my $rand_alg=&Apache::lonnet::get_rand_alg(); |
my $num=@order; |
if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' || |
my $version=&get_version(); |
$rand_alg eq '64bit2' || $rand_alg eq '64bit3' || |
my $which=($version-1)%$num; |
$rand_alg eq '64bit4' ) { |
return $order[$which]; |
&Apache::response::pushrandomnumber(); |
|
my @order=&Math::Random::random_permutation(@{$dimension{'instances'}}); |
|
my $num=@order; |
|
my $version=&get_version(); |
|
my $which=($version-1)%$num; |
|
return $order[$which]; |
|
} else { |
|
my ($version,$previous) = &get_version(); |
|
my $instance = |
|
$Apache::lonhomework::history{"resource.$version.0.$dim.instance"}; |
|
if (defined($instance)) { return $instance; } |
|
|
|
&Apache::response::pushrandomnumber(); |
|
my @instances = @{$dimension{'instances'}}; |
|
# remove disabled instances |
|
for (my $i=0; $i < $#instances; $i++) { |
|
if ($dimension{$instances[$i].'.disabled'}) { |
|
splice(@instances,$i,1); |
|
$i--; |
|
} |
|
} |
|
@instances = &Math::Random::random_permutation(@instances); |
|
$instance = $instances[($version-1)%scalar(@instances)]; |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.instance"} = |
|
$instance; |
|
&Apache::response::poprandomnumber(); |
|
return $instance; |
|
} |
} |
} |
|
|
{ |
{ |
Line 1441 sub get_instance {
|
Line 1468 sub get_instance {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result=&Apache::lonxml::endredirection(); |
my $result=&Apache::lonxml::endredirection(); |
my $dim=&get_id($parstack,$safeeval); |
my $dim=&get_id($parstack,$safeeval); |
my $instance=&get_instance(); |
my $instance=&get_instance($dim); |
my $version=&get_version(); |
my $version=&get_version(); |
if ($target eq 'web') { |
if ($target eq 'web') { |
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
$result.=&Apache::scripttag::xmlparse($dimension{'intro'}); |
$result.=&Apache::scripttag::xmlparse($dimension{'intro'}); |
@Apache::scripttag::parser_env = @_; |
my @instances = $instance; |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); |
if (&Apache::response::showallfoils()) { |
if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass' || |
@instances = @{$dimension{'instances'}}; |
$Apache::lonhomework::history{"resource.$version.status"} eq 'fail') { |
} |
|
foreach my $instance (@instances) { |
my $dim_status=$Apache::lonhomework::history{"resource.$version.$dim.status"}; |
@Apache::scripttag::parser_env = @_; |
my $mandatory='Mandatory'; |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); |
if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') { |
if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass' || |
$mandatory='Optional'; |
$Apache::lonhomework::history{"resource.$version.status"} eq 'fail') { |
} |
|
my $dim_info="<div class='$dim_status'>\n"; |
my $dim_status=$Apache::lonhomework::history{"resource.$version.$dim.status"}; |
if ($dim_status eq 'pass') { |
my $mandatory='Mandatory'; |
$dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>'; |
if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') { |
} |
|
if ($dim_status eq 'fail') { |
|
$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{$instance.'.criterias'}}) { |
|
if ($dimension{$instance.'.criteria.'.$id.'.mandatory'} |
|
eq 'N') { |
|
$opt_count++; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') { |
|
$opt_passed++; |
|
} |
|
} else { |
|
$man_count++; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') { |
|
$man_passed++; |
|
} |
|
} |
|
} |
|
if ($man_passed eq $man_count) { $man_passed='all'; } |
|
my $opt_req=$dimension{$instance.'.optionalrequired'}; |
|
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 $internal_location=&internal_location($dim); |
|
$result=~s/\Q$internal_location\E/$dim_info/; |
|
|
|
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
|
my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"}; |
|
my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}; |
|
my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N'); |
|
if ($mandatory) { |
|
$mandatory='Mandatory'; |
|
} else { |
|
$mandatory='Optional'; |
$mandatory='Optional'; |
} |
} |
if ($status eq 'fail') { |
my $dim_info="<div class='$dim_status'>\n"; |
} elsif ($status eq 'pass') { |
if ($dim_status eq 'pass') { |
} else { |
$dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>'; |
&Apache::lonxml::error("Student viewing a graded bridgetask was shown a status of $status"); |
} |
|
if ($dim_status eq 'fail') { |
|
$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{$instance.'.criterias'}}) { |
|
if ($dimension{$instance.'.criteria.'.$id.'.mandatory'} |
|
eq 'N') { |
|
$opt_count++; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') { |
|
$opt_passed++; |
|
} |
|
} else { |
|
$man_count++; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') { |
|
$man_passed++; |
|
} |
|
} |
} |
} |
my $status_display=$status; |
if ($man_passed eq $man_count) { $man_passed='all'; } |
$status_display=~s/^([a-z])/uc($1)/e; |
my $opt_req=$dimension{$instance.'.optionalrequired'}; |
@Apache::scripttag::parser_env = @_; |
if ($opt_req !~ /\S/) { $opt_req='0'; } |
$result.='<div class="'.$status.'"><h4>'.$mandatory. |
$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>"; |
' Criteria</h4><p>'; |
|
@Apache::scripttag::parser_env = @_; |
my $internal_location=&internal_location($dim); |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); |
$result=~s/\Q$internal_location\E/$dim_info/; |
$result.='</p><p class="grade">'.$status_display.'</p>'; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}) { |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
$result.='<p class="comment">'.$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}.'</p>'; |
my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"}; |
|
my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}; |
|
my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N'); |
|
if ($mandatory) { |
|
$mandatory='Mandatory'; |
|
} else { |
|
$mandatory='Optional'; |
|
} |
|
if ($status eq 'fail') { |
|
} elsif ($status eq 'pass') { |
|
} else { |
|
&Apache::lonxml::error("Student viewing a graded bridgetask was shown a status of $status"); |
|
} |
|
my $status_display=$status; |
|
$status_display=~s/^([a-z])/uc($1)/e; |
|
@Apache::scripttag::parser_env = @_; |
|
$result.='<div class="'.$status.'"><h4>'.$mandatory. |
|
' Criteria</h4><p>'; |
|
@Apache::scripttag::parser_env = @_; |
|
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); |
|
$result.='</p><p class="grade">'.$status_display.'</p>'; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}) { |
|
$result.='<p class="comment">'.$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}.'</p>'; |
|
} |
|
$result.='</div>'; |
} |
} |
$result.='</div>'; |
|
} |
} |
} |
} |
} elsif ($target eq 'webgrade') { |
} elsif ($target eq 'webgrade') { |
Line 1622 sub start_Instance {
|
Line 1655 sub start_Instance {
|
push(@Apache::bridgetask::instancelist,$id); |
push(@Apache::bridgetask::instancelist,$id); |
$dimension{$id.'.optionalrequired'}= |
$dimension{$id.'.optionalrequired'}= |
&Apache::lonxml::get_param('OptionalRequired',$parstack,$safeeval); |
&Apache::lonxml::get_param('OptionalRequired',$parstack,$safeeval); |
|
my $disabled = &Apache::lonxml::get_param('Disabled',$parstack,$safeeval); |
|
if (lc($disabled) eq 'yes') { |
|
$dimension{$id.'.disabled'}='1'; |
|
} |
return ''; |
return ''; |
} |
} |
|
|