--- loncom/homework/structuretags.pm 2005/11/16 20:37:37 1.322
+++ loncom/homework/structuretags.pm 2005/12/01 18:46:31 1.326
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.322 2005/11/16 20:37:37 albertel Exp $
+# $Id: structuretags.pm,v 1.326 2005/12/01 18:46:31 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -42,8 +42,8 @@ BEGIN {
}
sub start_web {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- my $bodytext=&Apache::lonxml::get_all_text("/web",$parser);
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $bodytext=&Apache::lonxml::get_all_text("/web",$parser,$style);
if ($target eq 'web') {
return $bodytext;
}
@@ -55,9 +55,9 @@ sub end_web {
}
sub start_tex {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result='';
- my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser);
+ my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser,$style);
if ($target eq 'tex') {
return $bodytext.' ';
}
@@ -346,6 +346,8 @@ sub initialize_storage {
sub finalize_storage {
my $result;
if (%Apache::lonhomework::results) {
+ my @remove = grep(/^INTERNAL_/,keys(%Apache::lonhomework::results));
+ delete(@Apache::lonhomework::results{@remove});
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
if ($env{'request.state'} eq 'construct' || $symb eq '') {
$Apache::lonhomework::results{'rndseed'}=$env{'form.rndseed'};
@@ -360,6 +362,8 @@ sub finalize_storage {
&store_aggregates($symb,$courseid);
}
}
+ } else {
+ &Apache::lonxml::debug('Nothing to store');
}
return $result;
}
@@ -510,7 +514,7 @@ sub get_problem_status {
}
sub start_problem {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
# We'll use the redirection to fix up printing of duedates.
if (!$Apache::lonxml::metamode) {
@@ -523,7 +527,7 @@ sub start_problem {
if ( $Apache::inputtags::part ne '' ||
$Apache::lonhomework::parsing_a_problem) {
&Apache::lonxml::error('Only one <problem> allowed in a .problem file');
- #my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser);
+ #my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser,$style);
return '';
}
@@ -609,19 +613,25 @@ sub start_problem {
}
$form_tag_start.='
';
}
- ($status,$accessmsg) = &Apache::lonhomework::check_access('0');
+
+ ($status,$accessmsg,my $slot_name,my $slot) =
+ &Apache::lonhomework::check_slot_access('0','problem');
push (@Apache::inputtags::status,$status);
+
my $expression='$external::datestatus="'.$status.'";';
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.0.solved"}.'";';
&Apache::run::run($expression,$safeeval);
&Apache::lonxml::debug("Got $status");
+
if (( $status eq 'CLOSED' ) ||
( $status eq 'UNCHECKEDOUT') ||
( $status eq 'NOT_YET_VIEWED') ||
( $status eq 'BANNED') ||
( $status eq 'UNAVAILABLE') ||
+ ( $status eq 'NOT_IN_A_SLOT') ||
( $status eq 'INVALID_ACCESS')) {
- my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser);
+ my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser,
+ $style);
if ( $target eq "web" ) {
$result.= $head_tag_start.'';
my $msg=$body_tag_start;
@@ -636,6 +646,8 @@ sub start_problem {
$msg.=&checkout_msg;
} elsif ($status eq 'NOT_YET_VIEWED') {
$msg.=&firstaccess_msg($accessmsg,$symb);
+ } elsif ($status eq 'NOT_IN_A_SLOT') {
+ $msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work.");
}
$result.=$msg.'
';
} elsif ($target eq 'tex') {
@@ -646,6 +658,17 @@ sub start_problem {
$result.=&mt('Problem is not open to be viewed. It')." $accessmsg \\vskip 0 mm ";
}
}
+ } elsif ($status eq 'NEEDS_CHECKIN') {
+ my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser,
+ $style);
+ if ($target eq 'web') {
+ $result .= $head_tag_start.'';
+ $result .= $body_tag_start;
+ $result .= &Apache::bridgetask::proctor_validation_screen();
+ } elsif ($target eq 'grade') {
+ &Apache::bridgetask::proctor_check_auth($slot_name,$slot,
+ 'problem');
+ }
} elsif ($target eq 'web') {
my $name= &get_resource_name($parstack,$safeeval);
$result.="$head_tag_start$name
@@ -788,6 +811,8 @@ sub end_problem {
# if part is zero, no s existed, so we need to the grading
if ($status eq 'CAN_ANSWER' ||$Apache::lonhomework::scantronmode) {
&Apache::inputtags::grade;
+ } elsif ($status eq 'NEEDS_CHECKIN') {
+ # no need to grade, and don't want to hide data
} else {
# move any submission data to .hidden
&Apache::inputtags::hidealldata($Apache::inputtags::part);
@@ -910,12 +935,12 @@ sub end_library {
}
sub start_definetag {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
my $name = $token->[2]->{'name'};
- my $skip=&Apache::lonxml::get_all_text("/definetag",$parser);
+ my $skip=&Apache::lonxml::get_all_text("/definetag",$parser,$style);
if ($name=~/^\//) {
$result=
'
END '.$name.' |
';
@@ -1061,7 +1086,7 @@ sub end_instructorcomment {
}
sub start_while {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
@@ -1073,7 +1098,7 @@ sub start_while {
&Apache::lonxml::default_homework_load($safeeval);
}
my $result = &Apache::run::run($code,$safeeval);
- my $bodytext=&Apache::lonxml::get_all_text("/while",$parser);
+ my $bodytext=&Apache::lonxml::get_all_text("/while",$parser,$style);
push( @Apache::structuretags::whilebody, $bodytext);
push( @Apache::structuretags::whileline, $token->[5]);
&Apache::lonxml::debug("s code $code got -$result-");
@@ -1129,11 +1154,11 @@ sub end_while {
# ...
#
sub start_randomlist {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
if ($target eq 'answer' || $target eq 'grade' || $target eq 'web' ||
$target eq 'tex' || $target eq 'analyze') {
- my $body= &Apache::lonxml::get_all_text("/randomlist",$parser);
+ my $body= &Apache::lonxml::get_all_text("/randomlist",$parser,$style);
my $b_parser= HTML::LCParser->new(\$body);
$b_parser->xml_mode(1);
$b_parser->marked_sections(1);
@@ -1222,7 +1247,7 @@ sub ordered_show_check {
}
sub start_part {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
if (!$Apache::lonxml::metamode) {
&Apache::lonxml::startredirection(); # we'll use redirection to fix up
# duedates.
@@ -1251,7 +1276,7 @@ sub start_part {
} elsif ($target eq 'web' || $target eq 'grade' ||
$target eq 'answer' || $target eq 'tex') {
if ($hidden || !$in_order_show) {
- my $bodytext=&Apache::lonxml::get_all_text("/part",$parser);
+ my $bodytext=&Apache::lonxml::get_all_text("/part",$parser,$style);
} else {
my ($status,$accessmsg) = &Apache::lonhomework::check_access($id);
push (@Apache::inputtags::status,$status);
@@ -1267,7 +1292,8 @@ sub start_part {
( $status eq 'BANNED') ||
( $status eq 'UNAVAILABLE') ||
( $status eq 'INVALID_ACCESS')) {
- my $bodytext=&Apache::lonxml::get_all_text("/part",$parser);
+ my $bodytext=&Apache::lonxml::get_all_text("/part",$parser,
+ $style);
if ( $target eq "web" ) {
$result="
".&mt('Part is not open to be viewed. It')." $accessmsg
";
} elsif ( $target eq 'tex' ) {
@@ -1369,14 +1395,14 @@ sub end_part {
}
sub start_preduedate {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') {
&Apache::lonxml::debug("State in preduedate is ". $Apache::inputtags::status['-1']);
if (!$Apache::lonhomework::scantronmode &&
$Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&
$Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {
&Apache::lonxml::debug("Wha? ". ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER'));
- &Apache::lonxml::get_all_text("/preduedate",$parser);
+ &Apache::lonxml::get_all_text("/preduedate",$parser,$style);
}
}
return '';
@@ -1387,14 +1413,14 @@ sub end_preduedate {
}
sub start_postanswerdate {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
if ($target eq 'web' || $target eq 'grade') {
if ($Apache::lonhomework::scantronmode ||
$Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') {
- &Apache::lonxml::get_all_text("/postanswerdate",$parser);
+ &Apache::lonxml::get_all_text("/postanswerdate",$parser,$style);
}
} elsif ($target eq 'tex') {
- &Apache::lonxml::get_all_text("/postanswerdate",$parser);
+ &Apache::lonxml::get_all_text("/postanswerdate",$parser,$style);
}
return '';
}
@@ -1404,7 +1430,7 @@ sub end_postanswerdate {
}
sub start_notsolved {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
$target eq 'tex') {
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
@@ -1412,7 +1438,7 @@ sub start_notsolved {
if ($gradestatus =~ /^correct/ &&
&Apache::response::show_answer()) {
&Apache::lonxml::debug("skipping");
- &Apache::lonxml::get_all_text("/notsolved",$parser);
+ &Apache::lonxml::get_all_text("/notsolved",$parser,$style);
}
}
return '';
@@ -1423,13 +1449,13 @@ sub end_notsolved {
}
sub start_solved {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
$target eq 'tex') {
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
if ($gradestatus !~ /^correct/ ||
!&Apache::response::show_answer()) {
- &Apache::lonxml::get_all_text("/solved",$parser);
+ &Apache::lonxml::get_all_text("/solved",$parser,$style);
}
}
return '';
@@ -1440,7 +1466,7 @@ sub end_solved {
}
sub start_problemtype {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
$target eq 'tex' || $target eq 'analyze') {
@@ -1452,10 +1478,10 @@ sub start_problemtype {
if ($Apache::lonhomework::type eq lc($type)) { $found=1; }
}
if ($mode eq 'show' && !$found) {
- &Apache::lonxml::get_all_text("/problemtype",$parser);
+ &Apache::lonxml::get_all_text("/problemtype",$parser,$style);
}
if ($mode eq 'hide' && $found) {
- &Apache::lonxml::get_all_text("/problemtype",$parser);
+ &Apache::lonxml::get_all_text("/problemtype",$parser,$style);
}
} elsif ($target eq 'edit') {
$result .=&Apache::edit::tag_start($target,$token);
@@ -1489,12 +1515,12 @@ sub start_startouttext {
}
sub end_startouttext {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result='';
my $text='';
if ($target eq 'edit') {
- $text=&Apache::lonxml::get_all_text("endouttext",$parser);
+ $text=&Apache::lonxml::get_all_text("endouttext",$parser,$style);
$result.=&Apache::edit::start_table($token)."".&mt('Text Block')." |
".&mt('Delete:').
&Apache::edit::deletelist($target,$token)
@@ -1533,8 +1559,8 @@ sub end_endouttext {
}
sub delete_startouttext {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- # my $text=&Apache::lonxml::get_all_text("endouttext",$parser);
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ # my $text=&Apache::lonxml::get_all_text("endouttext",$parser,$style);
my $text=$$parser['-1']->get_text("/endouttext");
my $ntoken=$$parser['-1']->get_token();
&Apache::lonxml::debug("Deleting :$text: and :$ntoken->[0]:$ntoken->[1]:$ntoken->[2]: for startouttext");
|