version 1.560, 2018/05/15 04:59:14
|
version 1.572, 2022/04/01 20:17:43
|
Line 63 use Apache::londefdef;
|
Line 63 use Apache::londefdef;
|
use Apache::lonenc(); |
use Apache::lonenc(); |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use Time::HiRes qw( gettimeofday tv_interval ); |
|
use HTML::Entities(); |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA; |
use LONCAPA; |
|
|
Line 366 var postsubmit = '$postsubmit';
|
Line 367 var postsubmit = '$postsubmit';
|
submithandled = 1; |
submithandled = 1; |
\$( "#msg_"+buttonId ).css({"display": "inline","background-color": "#87cefa", |
\$( "#msg_"+buttonId ).css({"display": "inline","background-color": "#87cefa", |
"color": "black","padding": "2px"}) ; |
"color": "black","padding": "2px"}) ; |
if (( \$(this.form).id == "LC_page" ) && (\$('input[name="all_submit"]').length )) { |
if (( \$(this.form).attr("id") == "LC_page" ) && (\$('input[name="all_submit"]').length )) { |
if (buttonId != "all_submit") { |
if (buttonId != "all_submit") { |
\$( ".LC_status_"+buttonId ).hide(); |
\$( ".LC_status_"+buttonId ).hide(); |
if (( "#"+buttonId+"_pressed" ).length) { |
} |
\$( "#"+buttonId+"_pressed" ).val( "1" ); |
if (( "#"+buttonId+"_pressed" ).length) { |
} |
\$( "#"+buttonId+"_pressed" ).val( "1" ); |
} |
} |
} else { |
} else { |
\$( ".LC_status_"+buttonId ).hide(); |
\$( ".LC_status_"+buttonId ).hide(); |
Line 384 var postsubmit = '$postsubmit';
|
Line 385 var postsubmit = '$postsubmit';
|
if (timeout > 0) { |
if (timeout > 0) { |
setTimeout(function(){ |
setTimeout(function(){ |
\$( "#msg_"+buttonId ).css({"display": "none"}); |
\$( "#msg_"+buttonId ).css({"display": "none"}); |
if (( \$(this.form).id == "LC_page" ) && (\$('input[name="all_submit"]').length )) { |
if (( \$(this.form).attr("id") == "LC_page" ) && (\$('input[name="all_submit"]').length )) { |
if (buttonId != "all_submit") { |
if (( "#"+buttonId+"_pressed" ).length) { |
if (( "#"+buttonId+"_pressed" ).length) { |
\$( "#"+buttonId+"_pressed" ).val( "" ); |
\$( "#"+buttonId+"_pressed" ).val( "" ); |
|
} |
|
} |
} |
} |
} |
\$( ".LC_hwk_submit" ).prop( "disabled", false); |
\$( ".LC_hwk_submit" ).prop( "disabled", false); |
Line 669 sub get_resource_name {
|
Line 668 sub get_resource_name {
|
} |
} |
|
|
sub setup_rndseed { |
sub setup_rndseed { |
my ($safeeval,$target,$probpartlist)=@_; |
my ($safeeval,$target,$probpartlist,$prevparttype)=@_; |
my ($symb)=&Apache::lonnet::whichuser(); |
my ($symb)=&Apache::lonnet::whichuser(); |
my ($questiontype,$set_safespace,$rndseed); |
my ($questiontype,$set_safespace,$rndseed,$numtries,$reqtries); |
if ($target eq 'analyze') { |
if ($target eq 'analyze') { |
$questiontype = $env{'form.grade_questiontype'}; |
$questiontype = $env{'form.grade_questiontype'}; |
} |
} |
unless (defined($questiontype)) { |
unless (defined($questiontype)) { |
$questiontype = $Apache::lonhomework::type; |
$questiontype = $Apache::lonhomework::type; |
} |
} |
|
if ($Apache::lonhomework::type eq 'randomizetry') { |
|
my $partfortries = $Apache::inputtags::part; |
|
# |
|
# Where question type is "randomizetry" for a problem containing |
|
# a single part (and unless type is explicitly set to not be |
|
# "randomizetry" for that part), the number of tries used to |
|
# determine randomization will be for that part, and randomization |
|
# from calls to &random() in a perl script block before the part tag, |
|
# will change based on the number of tries, and value of the |
|
# "randomizeontries" parameter in effect for the single part. |
|
# |
|
if (ref($probpartlist) eq 'ARRAY') { |
|
if ((@{$probpartlist} == 1) && ($probpartlist->[0] ne $partfortries)) { |
|
if (&Apache::lonnet::EXT('resource.'.$probpartlist->[0].'.type') eq 'randomizetry') { |
|
$partfortries = $probpartlist->[0]; |
|
} else { |
|
$partfortries = ''; |
|
} |
|
} |
|
} |
|
if ($partfortries ne '') { |
|
$numtries = $Apache::lonhomework::history{"resource.$partfortries.tries"}; |
|
$reqtries = &Apache::lonnet::EXT("resource.$partfortries.randomizeontries"); |
|
} |
|
} |
if (($env{'request.state'} eq "construct") |
if (($env{'request.state'} eq "construct") |
|| ($symb eq '') |
|| ($symb eq '') |
|| ($Apache::lonhomework::type eq 'practice') |
|| ($Apache::lonhomework::type eq 'practice') |
Line 695 sub setup_rndseed {
|
Line 719 sub setup_rndseed {
|
$env{'form.rndseed'}=$rndseed; |
$env{'form.rndseed'}=$rndseed; |
} |
} |
} |
} |
if (($env{'request.state'} eq "construct") && |
if ((($env{'request.state'} eq "construct") || ($symb eq '')) && |
($Apache::lonhomework::type eq 'randomizetry')) { |
($Apache::lonhomework::type eq 'randomizetry')) { |
my $tries = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.tries"}; |
if ($numtries) { |
if ($tries) { |
if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) { |
$rndseed += $tries; |
my $inc = int($numtries/$reqtries); |
|
$rndseed += $inc; |
|
} else { |
|
$rndseed += $numtries; |
|
} |
} |
} |
$env{'form.'.$Apache::inputtags::part.'.rndseed'}=$rndseed; |
$env{'form.'.$Apache::inputtags::part.'.rndseed'}=$rndseed; |
} |
} |
Line 737 sub setup_rndseed {
|
Line 765 sub setup_rndseed {
|
} |
} |
unless (($target eq 'analyze') && (defined($rndseed))) { |
unless (($target eq 'analyze') && (defined($rndseed))) { |
$rndseed=&Apache::lonnet::rndseed(); |
$rndseed=&Apache::lonnet::rndseed(); |
my $partfortries = $Apache::inputtags::part; |
my $curr_try = $numtries; |
if (ref($probpartlist) eq 'ARRAY') { |
|
if ((@{$probpartlist} == 1) && ($probpartlist->[0] ne $Apache::inputtags::part)) { |
|
$partfortries = $probpartlist->[0]; |
|
} |
|
} |
|
my $curr_try = $Apache::lonhomework::history{"resource.$partfortries.tries"}; |
|
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
$curr_try ++; |
$curr_try ++; |
} |
} |
Line 751 sub setup_rndseed {
|
Line 773 sub setup_rndseed {
|
$rndseed = $1; |
$rndseed = $1; |
} |
} |
if ($curr_try) { |
if ($curr_try) { |
my $reqtries = &Apache::lonnet::EXT("resource.$partfortries.randomizeontries"); |
|
if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) { |
if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) { |
my $inc = int(($curr_try-1)/$reqtries); |
my $inc = int(($curr_try-1)/$reqtries); |
$rndseed += $inc; |
$rndseed += $inc; |
Line 764 sub setup_rndseed {
|
Line 785 sub setup_rndseed {
|
if ($target eq 'grade') { |
if ($target eq 'grade') { |
$Apache::lonhomework::rawrndseed = $rndseed; |
$Apache::lonhomework::rawrndseed = $rndseed; |
} |
} |
|
} elsif ($prevparttype eq 'randomizetry') { |
|
if ($env{'form.0.rndseed'} ne '') { |
|
$set_safespace = 1; |
|
$rndseed = $env{'form.0.rndseed'}; |
|
} |
} |
} |
if ($set_safespace) { |
if ($set_safespace) { |
if ($safeeval) { |
if ($safeeval) { |
&Apache::lonxml::debug("Setting rndseed to $rndseed"); |
&Apache::lonxml::debug("Setting rndseed to $rndseed"); |
&Apache::run::run('$external::randomseed="'.$rndseed.'";',$safeeval); |
&Apache::run::run('$external::randomseed="'.$rndseed.'";',$safeeval); |
|
if (($Apache::lonhomework::type eq 'randomizetry') || ($prevparttype eq 'randomizetry')) { |
|
&Apache::lonxml::debug("Setting randomizetrypart to $Apache::inputtags::part"); |
|
&Apache::run::run('$external::randomizetrypart="'.$Apache::inputtags::part.'";',$safeeval); |
|
} |
} |
} |
} |
} |
unless (($env{'request.state'} eq "construct") || ($symb eq '')) { |
unless (($env{'request.state'} eq "construct") || ($symb eq '')) { |
Line 1117 sub finalize_storage {
|
Line 1147 sub finalize_storage {
|
delete(@Apache::lonhomework::results{@remove}); |
delete(@Apache::lonhomework::results{@remove}); |
my ($symb,$courseid,$domain,$name) = |
my ($symb,$courseid,$domain,$name) = |
&Apache::lonnet::whichuser($given_symb); |
&Apache::lonnet::whichuser($given_symb); |
my ($passback,$ltiscope,$ltimap,$ltisymb,$ltiref,$total,$possible); |
my ($passback,$ltiscope,$ltimap,$ltisymb,$ltiref,$total,$possible,$dopassback); |
if ($env{'request.state'} eq 'construct' |
if ($env{'request.state'} eq 'construct' |
|| $symb eq '' |
|| $symb eq '' |
|| $Apache::lonhomework::type eq 'practice') { |
|| $Apache::lonhomework::type eq 'practice') { |
Line 1219 sub finalize_storage {
|
Line 1249 sub finalize_storage {
|
} |
} |
} |
} |
} |
} |
if (($passback) && ($ltiscope eq 'resource') && ($ltisymb eq $symb)) { |
if ($passback) { |
|
foreach my $key (keys(%Apache::lonhomework::results)) { |
|
if ($key =~ /^resource\.([^\.]+)\.solved$/) { |
|
my $part = $1; |
|
if ((($Apache::lonhomework::results{$key} =~ /^correct_/) || |
|
($Apache::lonhomework::results{$key} eq 'incorrect_attempted')) && |
|
($Apache::lonhomework::results{"resource.$part.tries"})) { |
|
$dopassback = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
if (($dopassback) && ($ltiscope eq 'resource') && ($ltisymb eq $symb)) { |
$total = 0; |
$total = 0; |
$possible = 0; |
$possible = 0; |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
Line 1258 sub finalize_storage {
|
Line 1301 sub finalize_storage {
|
} |
} |
&Apache::lonxml::debug('Store return message:'.$result); |
&Apache::lonxml::debug('Store return message:'.$result); |
&store_aggregates($symb,$courseid); |
&store_aggregates($symb,$courseid); |
if ($passback) { |
if ($dopassback) { |
my $scoreformat = 'decimal'; |
my $scoreformat = 'decimal'; |
if (ref($ltiref) eq 'HASH') { |
if (ref($ltiref) eq 'HASH') { |
if ($ltiref->{'scoreformat'} =~ /^(decimal|ratio|percentage)$/) { |
if ($ltiref->{'scoreformat'} =~ /^(decimal|ratio|percentage)$/) { |
Line 1604 sub firstaccess_msg {
|
Line 1647 sub firstaccess_msg {
|
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
my $buttontext = &mt('Show Resource'); |
my $buttontext = &mt('Show Resource'); |
my $timertext = &mt('Start Timer?'); |
my $timertext = &mt('Start Timer?'); |
|
my $shownsymb = &HTML::Entities::encode(&Apache::lonenc::check_encrypt($symb),'\'"<>&'); |
$result .= (<<ENDCHECKOUT); |
$result .= (<<ENDCHECKOUT); |
<form name="markaccess" method="post" action="$uri"> |
<form name="markaccess" method="post" action="$uri"> |
<input type="hidden" name="markaccess" value="yes" /> |
<input type="hidden" name="markaccess" value="yes" /> |
|
<input type="hidden" name="symb" value="$shownsymb" /> |
<input type="button" name="accessbutton" value="$buttontext" onclick="javascript:if (confirm('$timertext')) { document.markaccess.submit(); }" /> |
<input type="button" name="accessbutton" value="$buttontext" onclick="javascript:if (confirm('$timertext')) { document.markaccess.submit(); }" /> |
</form> |
</form> |
ENDCHECKOUT |
ENDCHECKOUT |
Line 1648 sub init_problem_globals {
|
Line 1693 sub init_problem_globals {
|
@Apache::structuretags::whilebody=(); |
@Apache::structuretags::whilebody=(); |
@Apache::structuretags::whileline=(); |
@Apache::structuretags::whileline=(); |
$Apache::lonhomework::scantronmode=0; |
$Apache::lonhomework::scantronmode=0; |
|
$Apache::lonhomework::randomizetrypart=0; |
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::default_type); |
undef($Apache::lonhomework::default_type); |
undef($Apache::lonhomework::type); |
undef($Apache::lonhomework::type); |
Line 1671 sub reset_problem_globals {
|
Line 1717 sub reset_problem_globals {
|
undef($Apache::lonhomework::default_type); |
undef($Apache::lonhomework::default_type); |
undef($Apache::lonhomework::type); |
undef($Apache::lonhomework::type); |
undef($Apache::lonhomework::scantronmode); |
undef($Apache::lonhomework::scantronmode); |
|
undef($Apache::inputtags::randomizetrypart); |
undef($Apache::lonhomework::ignore_response_errors); |
undef($Apache::lonhomework::ignore_response_errors); |
undef(@Apache::functionplotresponse::callscripts); |
undef(@Apache::functionplotresponse::callscripts); |
&Apache::lonhomework::reset_show_problem_status(); |
&Apache::lonhomework::reset_show_problem_status(); |
Line 1765 sub start_problem {
|
Line 1812 sub start_problem {
|
my $ipused; |
my $ipused; |
|
|
my $name= &get_resource_name($parstack,$safeeval); |
my $name= &get_resource_name($parstack,$safeeval); |
my ($result,$form_tag_start,$slot_name,$slot,$probpartlist); |
my ($result,$form_tag_start,$slot_name,$slot,$probpartlist,$firstaccres); |
|
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
$target eq 'tex') { |
$target eq 'tex') { |
if ($env{'form.markaccess'}) { |
if ($env{'form.markaccess'}) { |
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
my ($timelimit) = split(/_/,$interval[0]); |
my ($timelimit) = split(/_/,$interval[0]); |
&Apache::lonnet::set_first_access($interval[1],$timelimit); |
my $is_set = &Apache::lonnet::set_first_access($interval[1],$timelimit); |
|
unless (($is_set eq 'ok') || ($is_set eq 'already_set')) { |
|
$firstaccres = $is_set; |
|
} |
} |
} |
} |
} |
|
|
Line 1784 sub start_problem {
|
Line 1834 sub start_problem {
|
} elsif ((($target eq 'grade') && ($Apache::lonhomework::type eq 'randomizetry')) || |
} elsif ((($target eq 'grade') && ($Apache::lonhomework::type eq 'randomizetry')) || |
($target eq 'answer')) { |
($target eq 'answer')) { |
my ($symb)= &Apache::lonnet::whichuser(); |
my ($symb)= &Apache::lonnet::whichuser(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
if ($symb ne '') { |
if (ref($navmap)) { |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $res = $navmap->getBySymb($symb); |
if (ref($navmap)) { |
if (ref($res)) { |
my $res = $navmap->getBySymb($symb); |
$probpartlist = $res->parts(); |
if (ref($res)) { |
|
$probpartlist = $res->parts(); |
|
} |
} |
} |
} |
} |
} |
} |
Line 1808 sub start_problem {
|
Line 1860 sub start_problem {
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
$target eq 'tex') { |
$target eq 'tex') { |
|
|
|
my ($symb) = &Apache::lonnet::whichuser(); |
#handle rand seed in construction space |
#handle rand seed in construction space |
|
if (($env{'request.state'} eq 'construct') || ($symb eq '')) { |
|
my $partorder=&Apache::lonnet::metadata($env{'request.uri'},'partorder'); |
|
if ($partorder ne '') { |
|
@{$probpartlist} = split(/,/,$partorder); |
|
} |
|
} |
my $rndseed=&setup_rndseed($safeeval,$target,$probpartlist); |
my $rndseed=&setup_rndseed($safeeval,$target,$probpartlist); |
if (($target eq 'grade') && &Apache::response::submitted()) { |
if (($target eq 'grade') && &Apache::response::submitted()) { |
if ($Apache::lonhomework::type eq 'randomizetry') { |
if ($Apache::lonhomework::type eq 'randomizetry') { |
Line 1823 sub start_problem {
|
Line 1882 sub start_problem {
|
} |
} |
} |
} |
} |
} |
my ($symb)=&Apache::lonnet::whichuser(); |
|
|
|
if ($env{'request.state'} ne "construct" && |
if ($env{'request.state'} ne "construct" && |
($symb eq '' || $Apache::lonhomework::type eq 'practice')) { |
($symb eq '' || $Apache::lonhomework::type eq 'practice')) { |
|
my $rndseedval = $rndseed; |
|
if (($symb eq '') && ($Apache::lonhomework::type eq 'randomizetry')) { |
|
$rndseedval = $env{'form.rndseed'}; |
|
} |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$rndseed.'" />'. |
$rndseedval.'" />'. |
'<button type="submit" name="resetdata" |
'<button type="submit" name="resetdata" |
value="new_problem_variation">'.&mt('New Problem Variation').'</button>'; |
value="new_problem_variation">'.&mt('New Problem Variation').'</button>'; |
if (exists($env{'form.username'})) { |
if (exists($env{'form.username'})) { |
Line 1850 sub start_problem {
|
Line 1912 sub start_problem {
|
$form_tag_start.=&practice_problem_header(); |
$form_tag_start.=&practice_problem_header(); |
} |
} |
$form_tag_start.='<hr />'; |
$form_tag_start.='<hr />'; |
} elsif (($env{'request.state'} ne "construct") && |
} |
($Apache::lonhomework::type eq 'randomizetry') && |
if (($env{'request.state'} ne "construct") && |
($status eq 'CAN_ANSWER') && |
($Apache::lonhomework::type eq 'randomizetry') && |
($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement') && |
($status eq 'CAN_ANSWER') && |
(!$env{'request.role.adv'})) { |
($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement') && |
|
(!$env{'request.role.adv'})) { |
# "New Problem Variation Each Try" header suppressed for Placement Tests, unless course personnel. |
# "New Problem Variation Each Try" header suppressed for Placement Tests, unless course personnel. |
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
my @parts; |
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
if (ref($probpartlist) eq 'ARRAY') { |
$form_tag_start.=&randomizetry_problem_header($problemstatus,$reqtries); |
@parts = @{$probpartlist}; |
|
} |
|
unless (@parts) { |
|
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
|
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
|
$form_tag_start.=&randomizetry_problem_header($problemstatus,$reqtries,$symb); |
|
} |
} |
} |
|
|
my $expression='$external::datestatus="'.$status.'";'; |
my $expression='$external::datestatus="'.$status.'";'; |
Line 1879 sub start_problem {
|
Line 1948 sub start_problem {
|
( $status eq 'NEED_DIFFERENT_IP')) { |
( $status eq 'NEED_DIFFERENT_IP')) { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
|
if (($status eq 'NOT_YET_VIEWED') && ($firstaccres)) { |
|
$result .= '<p class="LC_error">'. |
|
&mt('A problem occurred when trying to start the timer.').'</p>'; |
|
} |
$result .= &access_status_msg('problem',$status,$symb,$target,$ipused,$accessmsg); |
$result .= &access_status_msg('problem',$status,$symb,$target,$ipused,$accessmsg); |
} elsif ($status eq 'NEEDS_CHECKIN') { |
} elsif ($status eq 'NEEDS_CHECKIN') { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
Line 1912 sub start_problem {
|
Line 1985 sub start_problem {
|
$result.= '<button type="submit" name="resetdata" '. |
$result.= '<button type="submit" name="resetdata" '. |
'value="new_problem_variation">'.&mt('New Problem Variation').'</button>'. |
'value="new_problem_variation">'.&mt('New Problem Variation').'</button>'. |
&practice_problem_header().'<hr />'; |
&practice_problem_header().'<hr />'; |
|
} elsif ($Apache::lonhomework::type eq 'randomizetry') { |
|
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
|
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
|
$result.=&randomizetry_problem_header($problemstatus,$reqtries); |
} |
} |
} |
} |
# if we are viewing someone else preserve that info |
# if we are viewing someone else preserve that info |
Line 2143 sub end_problem {
|
Line 2220 sub end_problem {
|
} |
} |
} |
} |
if ($target eq 'web') { |
if ($target eq 'web') { |
$result.=&Apache::functionplotresponse::init_script(); |
$result.=&Apache::functionplotresponse::init_script(); |
|
if ($Apache::lonhomework::default_type eq 'randomizetry') { |
|
my ($symb) = &Apache::lonnet::whichuser(); |
|
if ((($env{'request.state'} eq 'construct') || ($symb eq '')) && |
|
($status eq 'CAN_ANSWER')) { |
|
unless (@Apache::inputtags::partlist > 1) { |
|
$result.= <<"ENDJS"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
\$(document).ready(function() { |
|
\$('#LC_randomizetry_header').css('display','block'); |
|
}); |
|
// ]]> |
|
</script> |
|
ENDJS |
|
} |
|
} |
|
} |
} |
} |
if ($target eq 'grade') { |
if ($target eq 'grade') { |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
Line 2868 sub start_part {
|
Line 2962 sub start_part {
|
if (($target eq 'grade') && &Apache::response::submitted()) { |
if (($target eq 'grade') && &Apache::response::submitted()) { |
$Apache::lonhomework::results{"resource.$id.rndseed"}=$rndseed; |
$Apache::lonhomework::results{"resource.$id.rndseed"}=$rndseed; |
} |
} |
|
} elsif (@Apache::inputtags::partlist > 1) { |
|
my $prevparttype = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[-2].type"); |
|
if ($prevparttype eq 'randomizetry') { |
|
my $rndseed=&setup_rndseed($safeeval,$target,'',$prevparttype); |
|
if (($target eq 'grade') && &Apache::response::submitted()) { |
|
$Apache::lonhomework::results{"resource.$id.rndseed"}=$rndseed; |
|
} |
|
} |
} elsif (($target eq 'grade') && &Apache::response::submitted()) { |
} elsif (($target eq 'grade') && &Apache::response::submitted()) { |
$Apache::lonhomework::results{"resource.$id.rndseed"}=$Apache::lonhomework::rawrndseed; |
$Apache::lonhomework::results{"resource.$id.rndseed"}=$Apache::lonhomework::rawrndseed; |
} |
} |
Line 2943 sub start_part {
|
Line 3045 sub start_part {
|
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
my $probrandomize = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[0].type"); |
|
my $probrandtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[0].randomizeontries"); |
|
my $num = scalar(@Apache::inputtags::partlist)-1; |
my $num = scalar(@Apache::inputtags::partlist)-1; |
if ($probrandomize eq 'randomizetry') { |
if ((($Apache::lonhomework::default_type eq 'randomizetry') || |
if (&Apache::lonnet::EXT("resource.$Apache::inputtags::part.type") ne 'randomizetry') { |
($Apache::lonhomework::randomizetrypart)) && |
$result .= &randomizetry_part_header($problemstatus,'none',$num); |
($Apache::lonhomework::type ne 'randomizetry')) { |
} else { |
$result .= &randomizetry_part_header($problemstatus,'none',$num); |
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
} elsif ($Apache::lonhomework::type eq 'randomizetry') { |
if ($probrandtries ne $reqtries) { |
$Apache::lonhomework::randomizetrypart = 1; |
$result .= &randomizetry_part_header($problemstatus,$reqtries,$num); |
my $reqtries = &Apache::lonnet::EXT("resource.$id.randomizeontries"); |
} |
|
} |
|
} elsif (&Apache::lonnet::EXT("resource.$Apache::inputtags::part.type") eq 'randomizetry') { |
|
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
|
$result .= &randomizetry_part_header($problemstatus,$reqtries,$num); |
$result .= &randomizetry_part_header($problemstatus,$reqtries,$num); |
} |
} |
} |
} |
Line 3011 sub end_part {
|
Line 3107 sub end_part {
|
$gradestatus=''; |
$gradestatus=''; |
} |
} |
$result.=$gradestatus; |
$result.=$gradestatus; |
if ($$tagstack[-2] eq 'td' and $target eq 'tex') {$result.='\end{minipage}';} |
if ($$tagstack[-2] eq 'td' and $target eq 'tex') { |
|
if (not $env{'form.problem_split'}=~/yes/) { |
|
$result.='\end{minipage}'; |
|
} |
|
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::end_table(); |
$result.=&Apache::edit::end_table(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
Line 3276 sub practice_problem_header {
|
Line 3376 sub practice_problem_header {
|
} |
} |
|
|
sub randomizetry_problem_header { |
sub randomizetry_problem_header { |
my ($problemstatus,$reqtries) = @_; |
my ($problemstatus,$reqtries,$symb) = @_; |
my ($header,$text); |
my ($header,$text); |
if ($reqtries > 1) { |
if ($reqtries > 1) { |
$header = &mt('New Problem Variation After Every [quant,_1,Try,Tries]',$reqtries); |
$header = &mt('New Problem Variation After Every [quant,_1,Try,Tries]',$reqtries); |
Line 3296 sub randomizetry_problem_header {
|
Line 3396 sub randomizetry_problem_header {
|
$text = &mt('A new variation will be generated after each try until correct or tries limit is reached.'); |
$text = &mt('A new variation will be generated after each try until correct or tries limit is reached.'); |
} |
} |
} |
} |
return '<h3 class="LC_info">'.$header.'</h3>'. |
if (($env{'request.state'} eq "construct") || ($symb eq '')) { |
'<span class="LC_info">'.$text.'</span><hr />'; |
return '<div class="LC_info" id="LC_randomizetry_header" style="display:none">'. |
|
'<h3>'.$header.'</h3><span class="LC_info">'.$text.'</span><hr /></div>'; |
|
} else { |
|
return '<h3 class="LC_info">'.$header.'</h3>'. |
|
'<span class="LC_info">'.$text.'</span><hr />'; |
|
} |
} |
} |
|
|
sub randomizetry_part_header { |
sub randomizetry_part_header { |
Line 3305 sub randomizetry_part_header {
|
Line 3410 sub randomizetry_part_header {
|
my ($header,$text); |
my ($header,$text); |
if ($reqtries eq 'none') { |
if ($reqtries eq 'none') { |
$header = &mt('No Question Variation'); |
$header = &mt('No Question Variation'); |
$text = &mt('For this question there will no new variation after a try.'); |
$text = &mt('For this question there will be no new variation after a try.'); |
} elsif ($reqtries > 1) { |
} elsif ($reqtries > 1) { |
$header = &mt('New Question Variation After Every [quant,_1,Try,Tries]',$reqtries); |
$header = &mt('New Question Variation After Every [quant,_1,Try,Tries]',$reqtries); |
if (($problemstatus eq 'no') || |
if (($problemstatus eq 'no') || |