version 1.66, 2001/08/22 19:21:36
|
version 1.68, 2001/09/18 02:21:13
|
Line 66 sub page_start {
|
Line 66 sub page_start {
|
sub initialize_storage { |
sub initialize_storage { |
%Apache::lonhomework::results=(); |
%Apache::lonhomework::results=(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
%Apache::lonhomework::history= |
if ($ENV{'request.state'} eq 'construct') { |
&Apache::lonnet::restore($symb,$courseid,$domain,$name); |
%Apache::lonhomework::history= |
|
&Apache::lonnet::restore($ENV{'request.uri'},'nohist_construct',$domain,$name); |
|
my ($temp)=keys %Apache::lonhomework::history ; |
|
&Apache::lonxml::debug("Return message of $temp"); |
|
} else { |
|
%Apache::lonhomework::history= |
|
&Apache::lonnet::restore($symb,$courseid,$domain,$name); |
|
} |
#ignore error conditions |
#ignore error conditions |
my ($temp)=keys %Apache::lonhomework::history ; |
my ($temp)=keys %Apache::lonhomework::history ; |
if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } |
if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } |
Line 82 sub finalize_storage {
|
Line 89 sub finalize_storage {
|
my ($temp) = keys %Apache::lonhomework::results; |
my ($temp) = keys %Apache::lonhomework::results; |
if ( $temp ne '' ) { |
if ( $temp ne '' ) { |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
if ($ENV{'request.state'} eq 'construct') { |
$symb,$courseid,$domain,$name); |
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
&Apache::lonxml::debug("Store return message:".$result); |
$ENV{'request.uri'},'nohist_construct', |
|
$domain,$name); |
|
&Apache::lonxml::debug('Construct Store return message:'.$result); |
|
} else { |
|
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
|
$symb,$courseid,$domain,$name); |
|
&Apache::lonxml::debug('Store return message:'.$result); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 127 sub start_problem {
|
Line 141 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.';'; |
&Apache::run::run($expression,$safeeval); |
&Apache::run::run($expression,$safeeval); |
my $status; |
my $status; |
Line 137 sub start_problem {
|
Line 151 sub start_problem {
|
my ($result,$head_tag_start,$body_tag_start)= |
my ($result,$head_tag_start,$body_tag_start)= |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
|
|
if ($Apache::lonhomework::type eq 'exam') { |
|
if ($target eq 'web') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { |
my $token=$Apache::lonhomework::history{"resource.0.outtoken"}; |
#handle exam checkout |
if (($ENV{'form.doescheckout'}) && (!$token)) { |
if ($Apache::lonhomework::type eq 'exam') { |
$token=&Apache::lonxml::maketoken(); |
my $token=$Apache::lonhomework::history{"resource.0.outtoken"}; |
$Apache::lonhomework::history{"resource.0.outtoken"}=$token; |
if (($ENV{'form.doescheckout'}) && (!$token)) { |
} |
$token=&Apache::lonxml::maketoken(); |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
$Apache::lonhomework::history{"resource.0.outtoken"}=$token; |
} |
} |
} |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
if ($target eq 'web' || $target eq 'grade') { |
} |
|
|
|
#handle rand seed in construction space |
|
my $rndseed; |
|
if ($ENV{'request.state'} eq "construct") { |
|
$rndseed=$ENV{'form.rndseed'}; |
|
if (!$rndseed) { |
|
$rndseed=time; |
|
$ENV{'form.rndseed'}=$rndseed; |
|
} |
|
&Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval); |
|
} |
($status,$accessmsg) = &Apache::lonhomework::check_access('0'); |
($status,$accessmsg) = &Apache::lonhomework::check_access('0'); |
push (@Apache::inputtags::status,$status); |
push (@Apache::inputtags::status,$status); |
my $expression='$external::datestatus="'.$status.'";'; |
my $expression='$external::datestatus="'.$status.'";'; |
Line 166 sub start_problem {
|
Line 191 sub start_problem {
|
} elsif ($status eq 'UNCHECKEDOUT') { |
} elsif ($status eq 'UNCHECKEDOUT') { |
$msg.=&checkout_msg; |
$msg.=&checkout_msg; |
} |
} |
return $result.$msg.'<br />'; |
$result.=$msg.'<br />'; |
} |
} |
} |
} elsif ($target eq 'web') { |
} |
my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval); |
if ($target eq 'web') { |
if ($name eq '') { |
my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval); |
$name=&Apache::lonnet::EXT('resource.title'); |
if ($name eq '') { |
if ($name eq 'con_lost') { $name = ''; } |
$name=&Apache::lonnet::EXT('resource.title'); |
} |
if ($name eq 'con_lost') { $name = ''; } |
$Apache::lonhomework::name=$name; |
} |
if ($status eq 'CAN_ANSWER') { |
$Apache::lonhomework::name=$name; |
# create a page header and exit |
if ($status eq 'CAN_ANSWER') { |
$result.="$head_tag_start<title>$name</title></head>\n |
# create a page header and exit |
|
$result.="$head_tag_start<title>$name</title></head>\n |
|
$body_tag_start\n |
$body_tag_start\n |
<form name=\"lonhomework\" method=\"POST\" action=\"".$ENV{'request.uri'}."\">". |
<form name=\"lonhomework\" method=\"POST\" action=\"".$ENV{'request.uri'}."\">". |
'<input type="hidden" name="submitted" value="yes" />'; |
'<input type="hidden" name="submitted" value="yes" />'; |
if ($ENV{'request.state'} eq "construct") { |
if ($ENV{'request.state'} eq "construct") { |
$result.='<input type="hidden" name="problemmode" value="View" /> |
$result.= |
<input type="submit" name="problemmode" value="Edit" /><hr />'; |
'<input type="hidden" name="problemmode" value="View" /> |
} |
<input type="submit" name="problemmode" value="Edit" /> |
# if we are viewing someone else preserve that info |
Random Seed:<input type="text" name="rndseed" width="10" value="'. |
if (defined $ENV{'form.grade_symb'}) { |
$rndseed.'" /><hr />'; |
foreach my $field ('symb','courseid','domain','username') { |
|
$result .= '<input type="hidden" name="grade_'.$field. |
|
'" value="'.$ENV{"form.grade_$field"}.'" />'."\n"; |
|
} |
} |
|
# if we are viewing someone else preserve that info |
|
if (defined $ENV{'form.grade_symb'}) { |
|
foreach my $field ('symb','courseid','domain','username') { |
|
$result .= '<input type="hidden" name="grade_'.$field. |
|
'" value="'.$ENV{"form.grade_$field"}.'" />'."\n"; |
|
} |
|
} |
|
} elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER' |
|
|| $status eq 'CLOSED') { |
|
$result.=$head_tag_start. |
|
"<title>$name</title></head>\n$body_tag_start\n"; |
} |
} |
return $result; |
|
} elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER' || $status eq 'CLOSED') { |
|
return $result.$head_tag_start."<title>$name</title></head>\n$body_tag_start\n"; |
|
} |
} |
} |
} elsif ($target eq 'edit') { |
if ($target eq 'edit') { |
|
$result.=$head_tag_start."</head>".$body_tag_start. |
$result.=$head_tag_start."</head>".$body_tag_start. |
'<form name="lonhomework" method="POST" action="'.$ENV{'request.uri'}.'"> |
'<form name="lonhomework" method="POST" action="'. |
|
$ENV{'request.uri'}.'"> |
<input type="hidden" name="submitted" value="edit" /> |
<input type="hidden" name="submitted" value="edit" /> |
<input type="hidden" name="problemmode" value="Edit" /> |
<input type="hidden" name="problemmode" value="Edit" /> |
<input type="submit" name="problemmode" value="View" /> |
<input type="submit" name="problemmode" value="View" /> |
Line 210 sub start_problem {
|
Line 238 sub start_problem {
|
'; |
'; |
my $temp=&Apache::edit::insertlist($target,$token); |
my $temp=&Apache::edit::insertlist($target,$token); |
$result.=$temp; |
$result.=$temp; |
return $result; |
} elsif ($target eq 'modified') { |
} |
|
if ($target eq 'modified') { |
|
$result=$token->[4]; |
$result=$token->[4]; |
$result.=&Apache::edit::handle_insert(); |
$result.=&Apache::edit::handle_insert(); |
return $result; |
} else { |
|
# page_start returned a starting result, delete it if we don't need it |
|
$result = ''; |
} |
} |
return ''; |
return $result; |
} |
} |
|
|
sub end_problem { |
sub end_problem { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result=''; |
my $result=''; |
my $status=$Apache::inputtags::status['-1']; |
my $status=$Apache::inputtags::status['-1']; |
if ($target eq 'grade' || $target eq 'web' ) { |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ) { |
if ( $target eq 'grade' && $Apache::inputtags::part eq '0' && |
if ( $target eq 'grade' && $Apache::inputtags::part eq '0' && |
$status eq 'CAN_ANSWER') { |
$status eq 'CAN_ANSWER') { |
# 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; |
&Apache::inputtags::grade; |
} elsif ($Apache::inputtags::part eq '0') { |
} elsif ( $target eq 'web' && $Apache::inputtags::part eq '0') { |
# 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 |
$result.= &Apache::inputtags::gradestatus($Apache::inputtags::part); |
$result.= &Apache::inputtags::gradestatus($Apache::inputtags::part); |
} |
} |
if ($target eq 'web') { |
if ( |
|
($target eq 'web' && ($ENV{'request.state'} ne 'construct')) || |
|
($target eq 'answer') |
|
) { |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
$result.="</form></body>\n"; |
$result.="</form></body>\n"; |
} elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') { |
} elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') { |
Line 293 sub end_library {
|
Line 324 sub end_library {
|
sub start_block { |
sub start_block { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
|
if ($target eq 'web' || $target eq 'grade') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { |
my $code = @$parstack[$#$parstack]; |
my $code = @$parstack[$#$parstack]; |
$code =~ s/\"//g; |
$code =~ s/\"//g; |
$code .=';return $condition;'; |
$code .=';return $condition;'; |
Line 407 sub start_part {
|
Line 438 sub start_part {
|
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
return &Apache::response::mandatory_part_meta; |
return &Apache::response::mandatory_part_meta; |
} elsif ($target eq 'web' || $target eq 'grade') { |
} elsif ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { |
my ($status,$accessmsg) = &Apache::lonhomework::check_access($id); |
my ($status,$accessmsg) = &Apache::lonhomework::check_access($id); |
push (@Apache::inputtags::status,$status); |
push (@Apache::inputtags::status,$status); |
my $expression='$external::datestatus="'.$status.'";'; |
my $expression='$external::datestatus="'.$status.'";'; |
Line 440 sub end_part {
|
Line 471 sub end_part {
|
|
|
sub start_preduedate { |
sub start_preduedate { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web' || $target eq 'grade') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { |
if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && |
if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && |
$Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER' ) { |
$Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER' ) { |
&Apache::lonxml::get_all_text("/preduedate",$$parser[$#$parser]); |
&Apache::lonxml::get_all_text("/preduedate",$$parser[$#$parser]); |
Line 469 sub end_postanswerdate {
|
Line 500 sub end_postanswerdate {
|
|
|
sub start_notsolved { |
sub start_notsolved { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web' || $target eq 'grade') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
&Apache::lonxml::debug("not solved has :$gradestatus:"); |
&Apache::lonxml::debug("not solved has :$gradestatus:"); |
if ($gradestatus =~ /^correct/) { |
if ($gradestatus =~ /^correct/) { |
Line 486 sub end_notsolved {
|
Line 517 sub end_notsolved {
|
|
|
sub start_solved { |
sub start_solved { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web' || $target eq 'grade') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') { |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
if ($gradestatus !~ /^correct/) { |
if ($gradestatus !~ /^correct/) { |
&Apache::lonxml::get_all_text("/solved",$$parser[$#$parser]); |
&Apache::lonxml::get_all_text("/solved",$$parser[$#$parser]); |