version 1.247, 2004/05/04 19:32:28
|
version 1.252, 2004/05/27 22:25:16
|
Line 40 use Apache::lonlocal;
|
Line 40 use Apache::lonlocal;
|
use Apache::lonxml; |
use Apache::lonxml; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext', |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
'simpleeditbutton','definetag')); |
|
} |
} |
|
|
sub start_web { |
sub start_web { |
Line 179 sub setup_rndseed {
|
Line 178 sub setup_rndseed {
|
} |
} |
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); |
} |
} |
} |
} |
return $rndseed; |
return $rndseed; |
Line 335 sub checkout_msg {
|
Line 334 sub checkout_msg {
|
ENDCHECKOUT |
ENDCHECKOUT |
} |
} |
|
|
|
sub firstaccess_msg { |
|
my ($time)=@_; |
|
return (<<ENDCHECKOUT); |
|
<h2>This resource is open for a limited time, once you click the 'Show Resource' button below you have $time to complete all resources in this sequence.</h2> |
|
<form name="markaccess" method="POST" action="$ENV{'request.uri'}"> |
|
<input type="hidden" name="markaccess" value="yes" /> |
|
<input type="button" name="accessbutton" value="Show Resource" onClick="javascript:if (confirm('Start Timer?')) { document.markaccess.submit(); }" /> |
|
</form> |
|
ENDCHECKOUT |
|
} |
|
|
sub init_problem_globals { |
sub init_problem_globals { |
my ($type)=@_; |
my ($type)=@_; |
#initialize globals |
#initialize globals |
Line 435 sub start_problem {
|
Line 445 sub start_problem {
|
|
|
#added vars to the scripting enviroment |
#added vars to the scripting enviroment |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
|
$expression.='$external::type=\''.$Apache::lonhomework::type.'\';'; |
&Apache::run::run($expression,$safeeval); |
&Apache::run::run($expression,$safeeval); |
my $status; |
my $status; |
my $accessmsg; |
my $accessmsg; |
Line 458 sub start_problem {
|
Line 469 sub start_problem {
|
} |
} |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
} |
} |
|
if ($ENV{'form.markaccess'}) { |
|
&Apache::lonnet::set_first_access('map'); |
|
} |
#handle rand seed in construction space |
#handle rand seed in construction space |
my $rndseed=&setup_rndseed($safeeval); |
my $rndseed=&setup_rndseed($safeeval); |
my ($symb)=&Apache::lonxml::whichuser(); |
my ($symb)=&Apache::lonxml::whichuser(); |
Line 478 sub start_problem {
|
Line 491 sub start_problem {
|
&Apache::lonxml::debug("Got $status"); |
&Apache::lonxml::debug("Got $status"); |
if (( $status eq 'CLOSED' ) || |
if (( $status eq 'CLOSED' ) || |
( $status eq 'UNCHECKEDOUT') || |
( $status eq 'UNCHECKEDOUT') || |
|
( $status eq 'NOT_YET_VIEWED') || |
( $status eq 'BANNED') || |
( $status eq 'BANNED') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'INVALID_ACCESS')) { |
( $status eq 'INVALID_ACCESS')) { |
Line 494 sub start_problem {
|
Line 508 sub start_problem {
|
$msg.='The problem '.$accessmsg; |
$msg.='The problem '.$accessmsg; |
} elsif ($status eq 'UNCHECKEDOUT') { |
} elsif ($status eq 'UNCHECKEDOUT') { |
$msg.=&checkout_msg; |
$msg.=&checkout_msg; |
|
} elsif ($status eq 'NOT_YET_VIEWED') { |
|
$msg.=&firstaccess_msg($accessmsg); |
} |
} |
$result.=$msg.'<br />'; |
$result.=$msg.'<br />'; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
Line 593 sub end_problem {
|
Line 609 sub end_problem {
|
my $status=$Apache::inputtags::status['-1']; |
my $status=$Apache::inputtags::status['-1']; |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
$target eq 'tex') { |
$target eq 'tex') { |
if ( $target eq 'grade' && $Apache::inputtags::part eq '0' && |
if ( $target eq 'grade' && $Apache::inputtags::part eq '0') { |
($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode)) { |
|
# if part is zero, no <part>s existed, so we need to the grading |
# if part is zero, no <part>s existed, so we need to the grading |
&Apache::inputtags::grade; |
if ($status eq 'CAN_ANSWER' ||$Apache::lonhomework::scantronmode) { |
|
&Apache::inputtags::grade; |
|
} else { |
|
# move any submission data to .hidden |
|
&Apache::inputtags::hidealldata($Apache::inputtags::part); |
|
} |
} elsif ( ($target eq 'web' || $target eq 'tex') && |
} elsif ( ($target eq 'web' || $target eq 'tex') && |
$Apache::inputtags::part eq '0' && |
$Apache::inputtags::part eq '0' && |
$status ne 'UNCHECKEDOUT') { |
$status ne 'UNCHECKEDOUT' && $status ne 'NOT_YET_VIEWED') { |
# if part is zero, no <part>s existed, so we need show the current |
# if part is zero, no <part>s existed, so we need show the current |
# grading status |
# grading status |
my $gradestatus = &Apache::inputtags::gradestatus($Apache::inputtags::part,$target); |
my $gradestatus = &Apache::inputtags::gradestatus($Apache::inputtags::part,$target); |
Line 979 sub shuffle {
|
Line 999 sub shuffle {
|
my $a=shift; |
my $a=shift; |
my $i; |
my $i; |
if (defined(@$a)) { |
if (defined(@$a)) { |
&Apache::response::setrandomnumber(); |
&Apache::response::pushrandomnumber(); |
for($i=@$a;--$i;) { |
for($i=@$a;--$i;) { |
my $j=int(&Math::Random::random_uniform() * ($i+1)); |
my $j=int(&Math::Random::random_uniform() * ($i+1)); |
next if $i == $j; |
next if $i == $j; |
@$a[$i,$j] = @$a[$j,$i]; |
@$a[$i,$j] = @$a[$j,$i]; |
} |
} |
|
&Apache::response::poprandomnumber(); |
} |
} |
} |
} |
|
|
Line 1032 sub start_part {
|
Line 1053 sub start_part {
|
} |
} |
if (( $status eq 'CLOSED' ) || |
if (( $status eq 'CLOSED' ) || |
( $status eq 'UNCHECKEDOUT') || |
( $status eq 'UNCHECKEDOUT') || |
|
( $status eq 'NOT_YET_VIEWED') || |
( $status eq 'BANNED') || |
( $status eq 'BANNED') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'INVALID_ACCESS')) { |
( $status eq 'INVALID_ACCESS')) { |
Line 1093 sub end_part {
|
Line 1115 sub end_part {
|
my $result=''; |
my $result=''; |
if ( $target eq 'meta' ) { |
if ( $target eq 'meta' ) { |
$result=''; |
$result=''; |
} elsif ($target eq 'grade' && |
} elsif ($target eq 'grade') { |
($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode) && |
if (($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode) && |
!$hidden) { |
!$hidden) { |
$result=&Apache::inputtags::grade; |
$result=&Apache::inputtags::grade; |
|
} else { |
|
# move any submission data to .hidden |
|
&Apache::inputtags::hidealldata($Apache::inputtags::part); |
|
} |
} elsif (($target eq 'web' || $target eq 'tex') && !$hidden ) { |
} elsif (($target eq 'web' || $target eq 'tex') && !$hidden ) { |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
$target); |
$target); |
Line 1181 sub end_solved {
|
Line 1207 sub end_solved {
|
return ''; |
return ''; |
} |
} |
|
|
|
sub start_problemtype { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my $result; |
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze') { |
|
my $mode=lc(&Apache::lonxml::get_param('mode',$parstack,$safeeval)); |
|
if (!defined($mode)) { $mode='show'; } |
|
my $for=&Apache::lonxml::get_param('for',$parstack,$safeeval); |
|
my $found=0; |
|
foreach my $type (split(',',$for)) { |
|
if ($Apache::lonhomework::type eq lc($type)) { $found=1; } |
|
} |
|
if ($mode eq 'show' && !$found) { |
|
&Apache::lonxml::get_all_text("/problemtype",$parser); |
|
} |
|
if ($mode eq 'hide' && $found) { |
|
&Apache::lonxml::get_all_text("/problemtype",$parser); |
|
} |
|
} elsif ($target eq 'edit') { |
|
$result .=&Apache::edit::tag_start($target,$token); |
|
$result.=&Apache::edit::select_arg('Mode:','mode', |
|
[['show','Show'], |
|
['hide','Hide']] |
|
,$token); |
|
$result .=&Apache::edit::checked_arg('When used as type(s):','for', |
|
[ ['exam','Exam/Quiz Problem'], |
|
['survey','Survey'], |
|
['problem','Homework Problem'] ] |
|
,$token); |
|
$result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'mode','for'); |
|
if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } |
|
} |
|
return $result; |
|
} |
|
|
|
sub end_problemtype { |
|
return ''; |
|
} |
|
|
sub start_startouttext { |
sub start_startouttext { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my @result=(''.''); |
my @result=(''.''); |