version 1.134, 2002/11/10 15:39:37
|
version 1.149, 2003/02/25 21:49:45
|
Line 35 package Apache::structuretags;
|
Line 35 package Apache::structuretags;
|
use strict; |
use strict; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::File(); |
use Apache::File(); |
|
use Apache::lonmenu; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext')); |
&Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext')); |
Line 43 BEGIN {
|
Line 44 BEGIN {
|
|
|
sub start_web { |
sub start_web { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $bodytext=&Apache::lonxml::get_all_text("/web",$$parser[$#$parser]); |
my $bodytext=&Apache::lonxml::get_all_text("/web",$parser); |
if ($target eq 'web') { |
if ($target eq 'web') { |
return $bodytext; |
return $bodytext; |
} |
} |
Line 56 sub end_web {
|
Line 57 sub end_web {
|
|
|
sub start_tex { |
sub start_tex { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $bodytext=&Apache::lonxml::get_all_text("/tex",$$parser[$#$parser]); |
my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser); |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
return $bodytext.' '; |
return $bodytext.' '; |
} |
} |
Line 81 sub page_start {
|
Line 82 sub page_start {
|
if (!defined($found{'html'})) { |
if (!defined($found{'html'})) { |
$result=&Apache::londefdef::start_html($target,$token,$tagstack,$parstack, |
$result=&Apache::londefdef::start_html($target,$token,$tagstack,$parstack, |
$parser,$safeeval); |
$parser,$safeeval); |
$head_tag_start='<head>'.&Apache::lonxml::registerurl(undef,$target); |
$head_tag_start='<head>'.&Apache::lonmenu::registerurl(undef,$target); |
} |
} |
my $body_tag_start; |
my $body_tag_start; |
if (!defined($found{'body'})) { |
if (!defined($found{'body'})) { |
$body_tag_start='<body onLoad="'.&Apache::lonxml::loadevents().'" '. |
$body_tag_start='<body onLoad="'.&Apache::lonmenu::loadevents().'" '. |
'onUnload="'.&Apache::lonxml::unloadevents().'" '; |
'onUnload="'.&Apache::lonmenu::unloadevents().'" '; |
my $background=&Apache::lonxml::get_param('background',$parstack,$safeeval); |
my $background=&Apache::lonxml::get_param('background',$parstack,$safeeval); |
if ($background) { |
if ($background) { |
$Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= |
$Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= |
Line 100 sub page_start {
|
Line 101 sub page_start {
|
$body_tag_start.='bgcolor="#ffffff"'; |
$body_tag_start.='bgcolor="#ffffff"'; |
} |
} |
} |
} |
$body_tag_start.='>'; |
$body_tag_start.='>'.&Apache::lonmenu::menubuttons(undef,$target); |
if ($target eq 'web' && $ENV{'request.state'} ne 'construct') { |
if ($target eq 'web' && $ENV{'request.state'} ne 'construct') { |
my ($symb)=&Apache::lonxml::whichuser(); |
my ($symb)=&Apache::lonxml::whichuser(); |
if ($symb eq '') { |
if ($symb eq '') { |
Line 118 sub page_start {
|
Line 119 sub page_start {
|
return ($result,$head_tag_start,$body_tag_start,$form_tag_start); |
return ($result,$head_tag_start,$body_tag_start,$form_tag_start); |
} |
} |
|
|
|
#use Time::HiRes(); |
sub get_resource_name { |
sub get_resource_name { |
my ($parstack,$safeeval)=@_; |
my ($parstack,$safeeval)=@_; |
my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval); |
my $name=&Apache::lonnet::gettitle(); |
if ($name eq '') { |
if ($name eq '') { |
$name=&Apache::lonnet::EXT('resource.title'); |
$name=&Apache::lonnet::EXT('resource.title'); |
if ($name eq 'con_lost') { $name = ''; } |
if ($name eq 'con_lost') { $name = ''; } |
} |
} |
Line 138 sub setup_rndseed {
|
Line 140 sub setup_rndseed {
|
$rndseed=time; |
$rndseed=time; |
$ENV{'form.rndseed'}=$rndseed; |
$ENV{'form.rndseed'}=$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 149 sub problem_edit_header {
|
Line 152 sub problem_edit_header {
|
<input type="submit" name="problemmode" value="Discard Edits and View" /> |
<input type="submit" name="problemmode" value="Discard Edits and View" /> |
<input type="submit" name="problemmode" value="EditXML" /> |
<input type="submit" name="problemmode" value="EditXML" /> |
<input type="submit" name="Undo" value="undo" /> <hr /> |
<input type="submit" name="Undo" value="undo" /> <hr /> |
<input type="submit" name="submit" value="Submit Changes" /> |
<input type="submit" name="submit" value="Submit Changes and Edit" /> |
<input type="submit" name="submit" value="Submit Changes and View" /><br /><p> </p> |
<input type="submit" name="submit" value="Submit Changes and View" /><br /><p> </p><table border="0"><tr><td bgcolor="#DDDDDD"> |
'; |
'; |
} |
} |
|
|
sub problem_edit_footer { |
sub problem_edit_footer { |
return '<br /><input type="submit" name="submit" value="Submit Changes and Edit" /> |
return '</td></tr></table><br /><input type="submit" name="submit" value="Submit Changes and Edit" /> |
<input type="submit" name="submit" value="Submit Changes and View" />'; |
<input type="submit" name="submit" value="Submit Changes and View" />'; |
} |
} |
|
|
Line 174 sub problem_web_to_edit_header {
|
Line 177 sub problem_web_to_edit_header {
|
<hr />'; |
<hr />'; |
my $numtoanalyze=$ENV{'form.numtoanalyze'}; |
my $numtoanalyze=$ENV{'form.numtoanalyze'}; |
if (!$numtoanalyze) { $numtoanalyze=100; } |
if (!$numtoanalyze) { $numtoanalyze=100; } |
#DISABLED for now. |
$result.= '<input type="submit" name="problemmode" value="Answer Distribution" /> |
#$result.= '<input type="submit" name="problemmode" value="Answer Distribution" /> |
<input type="text" name="numtoanalyze" value="'. |
# <input type="text" name="numtoanalyze" value="'. |
$numtoanalyze.'" size="5" /> <hr />'; |
# $numtoanalyze.'" size="5" /> <hr />'; |
|
return $result; |
return $result; |
} |
} |
|
|
Line 244 sub start_problem {
|
Line 246 sub start_problem {
|
# won't get reset |
# won't get reset |
if ( $Apache::inputtags::part ne '' && $target != 'meta' ) { |
if ( $Apache::inputtags::part ne '' && $target != 'meta' ) { |
&Apache::lonxml::error('Only one problem allowed in a .problem file'); |
&Apache::lonxml::error('Only one problem allowed in a .problem file'); |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$$parser[-1]); |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser); |
return ''; |
return ''; |
} |
} |
#intialize globals |
#intialize globals |
Line 281 sub start_problem {
|
Line 283 sub start_problem {
|
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
if ($target eq 'tex' and $ENV{'request.symb'} =~ m/\.page_/) { $result = '';} |
if ($target eq 'tex' and $ENV{'request.symb'} =~ m/\.page_/) { $result = '';} |
|
|
|
if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval); } |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
#handle exam checkout |
#handle exam checkout |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
Line 302 sub start_problem {
|
Line 305 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 'BANNED')) { |
( $status eq 'BANNED') || |
|
( $status eq 'UNAVAILABLE')) { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser); |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser); |
if ( $target eq "web" ) { |
if ( $target eq "web" ) { |
$result.= $head_tag_start.'</head>'; |
$result.= $head_tag_start.'</head>'; |
my $msg=$body_tag_start. |
my $msg=$body_tag_start; |
'<h1>Not open to be viewed</h1>'; |
if ($status eq 'UNAVAILABLE') { |
|
$result.='<h1>Unable to determine if this resource is open due to network problems. Please try again later.</h1>'; |
|
} else { |
|
$result.='<h1>Not open to be viewed</h1>'; |
|
} |
if ($status eq 'CLOSED') { |
if ($status eq 'CLOSED') { |
$msg.='The problem '.$accessmsg; |
$msg.='The problem '.$accessmsg; |
} elsif ($status eq 'UNCHECKEDOUT') { |
} elsif ($status eq 'UNCHECKEDOUT') { |
Line 315 sub start_problem {
|
Line 323 sub start_problem {
|
} |
} |
$result.=$msg.'<br />'; |
$result.=$msg.'<br />'; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result.="\\begin{document}\\noindent \\vskip 1 mm \\begin{minipage}{\\textwidth}\\vskip 0 mm Problem is not open to be viewed. It $accessmsg \\vskip 0 mm "; |
$result.="\\begin{document}\\noindent \\vskip 1 mm \\begin{minipage}{\\textwidth}\\vskip 0 mm "; |
} |
if ($status eq 'UNAVAILABLE') { |
|
$result.='Unable to determine if this resource is open due to network problems. Please try again later.\vskip 0 mm '; |
|
} else { |
|
$result.="Problem is not open to be viewed. It $accessmsg \\vskip 0 mm "; |
|
} |
|
} |
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
my $name= &get_resource_name($parstack,$safeeval); |
my $name= &get_resource_name($parstack,$safeeval); |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
Line 335 sub start_problem {
|
Line 348 sub start_problem {
|
} |
} |
} |
} |
} elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER' |
} elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER' |
|| $status eq 'CLOSED') { |
|| $status eq 'CLOSED' || $status eq 'UNAVALAILABLE') { |
$result.=$head_tag_start. |
$result.=$head_tag_start. |
"<title>$name</title></head>\n$body_tag_start\n"; |
"<title>$name</title></head>\n$body_tag_start\n"; |
} |
} |
Line 399 sub end_problem {
|
Line 412 sub end_problem {
|
my $result=''; |
my $result=''; |
my $status=$Apache::inputtags::status['-1']; |
my $status=$Apache::inputtags::status['-1']; |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex') { |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $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' ) { |
# 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 ( ($target eq 'web' || $target eq 'tex') && $Apache::inputtags::part eq '0' && |
} elsif ( ($target eq 'web' || $target eq 'tex') && $Apache::inputtags::part eq '0' && |
Line 423 sub end_problem {
|
Line 436 sub end_problem {
|
$result.="</body>\n"; |
$result.="</body>\n"; |
} |
} |
} |
} |
if ($target ne 'tex') { |
if ($target eq 'web') { |
$result.=&Apache::lonxml::xmlend(); |
$result.=&Apache::lonxml::xmlend(); |
} else { |
} elsif ($target eq 'tex') { |
$result .= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}'; |
$result .= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}'; |
if (not $ENV{'request.symb'} =~ m/\.page_/) { |
if (not $ENV{'request.symb'} =~ m/\.page_/) { |
$result .= '\end{minipage}\end{document} '; |
$result .= '\end{minipage}\end{document} '; |
} else { |
} else { |
$result .= ''; |
$result .= ''; |
} |
} |
} |
} |
} |
} |
if ($target eq 'grade') { |
if ($target eq 'grade') { |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&finalize_storage(); |
&finalize_storage(); |
} |
} |
|
if ($target eq 'answer' && ($ENV{'request.state'} eq 'construct') ) { |
|
$result.='</html>'; #normally we get it from xmlend, but in CSTR |
|
# we always show answer mode too. |
|
} |
} elsif ($target eq 'meta') { |
} elsif ($target eq 'meta') { |
if ($Apache::inputtags::part eq '0') { |
if ($Apache::inputtags::part eq '0') { |
$result=&Apache::response::mandatory_part_meta; |
$result=&Apache::response::mandatory_part_meta; |
Line 445 sub end_problem {
|
Line 462 sub end_problem {
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
&Apache::lonxml::debug("in end_problem with $target, edit"); |
&Apache::lonxml::debug("in end_problem with $target, edit"); |
$result = &problem_edit_footer(); |
$result = &problem_edit_footer(); |
} |
} |
return $result; |
return $result; |
} |
} |
|
|
Line 501 sub start_block {
|
Line 518 sub start_block {
|
if ($code) { |
if ($code) { |
$code =~ s/\"//g; |
$code =~ s/\"//g; |
$code .=';return $condition;'; |
$code .=';return $condition;'; |
|
if (!$Apache::lonxml::default_homework_loaded) { |
|
&Apache::lonxml::default_homework_load($safeeval); |
|
} |
$result = &Apache::run::run($code,$safeeval); |
$result = &Apache::run::run($code,$safeeval); |
&Apache::lonxml::debug("block :$code: returned :$result:"); |
&Apache::lonxml::debug("block :$code: returned :$result:"); |
} else { |
} else { |
$result='1'; |
$result='1'; |
} |
} |
if ( ! $result ) { |
if ( ! $result ) { |
my $skip=&Apache::lonxml::get_all_text("/block",$$parser[-1]); |
my $skip=&Apache::lonxml::get_all_text("/block",$parser); |
&Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]"); |
&Apache::lonxml::debug("skipping ahead :$skip: $$parser[-1]"); |
} |
} |
$result=''; |
$result=''; |
Line 536 sub start_while {
|
Line 556 sub start_while {
|
$code .=';return $condition;'; |
$code .=';return $condition;'; |
|
|
push( @Apache::structuretags::whileconds, $code); |
push( @Apache::structuretags::whileconds, $code); |
|
if (!$Apache::lonxml::default_homework_loaded) { |
|
&Apache::lonxml::default_homework_load($safeeval); |
|
} |
my $result = &Apache::run::run($code,$safeeval); |
my $result = &Apache::run::run($code,$safeeval); |
my $bodytext=$$parser[$#$parser]->get_text("/while"); |
my $bodytext=$$parser[$#$parser]->get_text("/while"); |
push( @Apache::structuretags::whilebody, $bodytext); |
push( @Apache::structuretags::whilebody, $bodytext); |
Line 567 sub start_randomlist {
|
Line 590 sub start_randomlist {
|
my $result; |
my $result; |
if ($target eq 'answer' || $target eq 'grade' || $target eq 'web' || |
if ($target eq 'answer' || $target eq 'grade' || $target eq 'web' || |
$target eq 'tex' || $target eq 'analyze') { |
$target eq 'tex' || $target eq 'analyze') { |
my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]); |
my $body= &Apache::lonxml::get_all_text("/randomlist",$parser); |
my $b_parser= HTML::TokeParser->new(\$body); |
my $b_parser= HTML::TokeParser->new(\$body); |
my $b_tok; |
my $b_tok; |
my @randomlist; |
my @randomlist; |
Line 643 sub start_part {
|
Line 666 sub start_part {
|
$Apache::inputtags::part=$id; |
$Apache::inputtags::part=$id; |
@Apache::inputtags::responselist = (); |
@Apache::inputtags::responselist = (); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
|
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); |
|
|
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' || $target eq 'answer' || $target eq 'tex') { |
} elsif ($target eq 'web' || $target eq 'grade' || |
my ($status,$accessmsg) = &Apache::lonhomework::check_access($id); |
$target eq 'answer' || $target eq 'tex') { |
push (@Apache::inputtags::status,$status); |
if ($hidden) { |
my $expression='$external::datestatus="'.$status.'";'; |
my $bodytext=&Apache::lonxml::get_all_text("/part",$parser); |
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$id.solved"}.'";'; |
} else { |
&Apache::run::run($expression,$safeeval); |
my ($status,$accessmsg) = &Apache::lonhomework::check_access($id); |
if ( $status eq 'CLOSED' ) { |
push (@Apache::inputtags::status,$status); |
my $bodytext=&Apache::lonxml::get_all_text("/part",$$parser[$#$parser]); |
my $expression='$external::datestatus="'.$status.'";'; |
if ( $target eq "web" ) { |
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$id.solved"}.'";'; |
$result="<br />Part is not open to be viewed. It $accessmsg<br />"; |
&Apache::run::run($expression,$safeeval); |
} elsif ( $target eq 'tex' ) { |
if ( $status eq 'CLOSED' ) { |
$result="\\end{minipage}\\vskip 0 mm Part is not open to be viewed. It $accessmsg \\\\\\begin{minipage}{\\textwidth}"; |
my $bodytext=&Apache::lonxml::get_all_text("/part",$parser); |
} |
if ( $target eq "web" ) { |
} else { |
$result="<br />Part is not open to be viewed. It $accessmsg<br />"; |
if ($target eq 'tex') { |
} elsif ( $target eq 'tex' ) { |
if ($$tagstack[-2] ne 'problem') { |
$result="\\end{minipage}\\vskip 0 mm Part is not open to be viewed. It $accessmsg \\\\\\begin{minipage}{\\textwidth}"; |
$result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent'; |
} |
} |
} else { |
|
if ($target eq 'tex') { |
|
if ($$tagstack[-2] ne 'problem') { |
|
$result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent'; |
|
} |
|
} |
|
} |
} |
} |
} |
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::text_arg('Part ID:','id',$token). |
$result.=&Apache::edit::text_arg('Part ID:','id',$token). |
Line 686 sub end_part {
|
Line 716 sub end_part {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
&Apache::lonxml::debug("in end_part $target "); |
&Apache::lonxml::debug("in end_part $target "); |
my $status=$Apache::inputtags::status['-1']; |
my $status=$Apache::inputtags::status['-1']; |
pop @Apache::inputtags::status; |
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); |
if ( $target eq 'meta' ) { return ''; } |
my $result=''; |
if ( $target eq 'grade' && $status eq 'CAN_ANSWER') { |
if ( $target eq 'meta' ) { |
return &Apache::inputtags::grade; |
$result=''; |
} |
} elsif ( $target eq 'grade' && $status eq 'CAN_ANSWER' && !$hidden) { |
if ($target eq 'web' || $target eq 'tex' ) { |
$result=&Apache::inputtags::grade; |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part,$target); |
} elsif (($target eq 'web' || $target eq 'tex') && !$hidden ) { |
|
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
|
$target); |
if ($Apache::lonhomework::type eq 'exam') {$gradestatus='';} |
if ($Apache::lonhomework::type eq 'exam') {$gradestatus='';} |
return $gradestatus; |
$result=$gradestatus; |
} |
} |
return ''; |
pop @Apache::inputtags::status; |
|
return $result; |
} |
} |
|
|
sub start_preduedate { |
sub start_preduedate { |
Line 705 sub start_preduedate {
|
Line 738 sub start_preduedate {
|
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::inputtags::status['-1'] ne 'SHOW_ANSWER') { |
$Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { |
&Apache::lonxml::get_all_text("/preduedate",$$parser[$#$parser]); |
&Apache::lonxml::get_all_text("/preduedate",$parser); |
} |
} |
} |
} |
return ''; |
return ''; |
Line 719 sub start_postanswerdate {
|
Line 752 sub start_postanswerdate {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { |
if ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { |
if ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { |
&Apache::lonxml::get_all_text("/postanswerdate",$$parser[$#$parser]); |
&Apache::lonxml::get_all_text("/postanswerdate",$parser); |
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
return '\vskip 0 mm \noindent'; |
return '\vskip 0 mm \noindent'; |
Line 738 sub start_notsolved {
|
Line 771 sub start_notsolved {
|
&Apache::lonxml::debug("not solved has :$gradestatus:"); |
&Apache::lonxml::debug("not solved has :$gradestatus:"); |
if ($gradestatus =~ /^correct/) { |
if ($gradestatus =~ /^correct/) { |
&Apache::lonxml::debug("skipping"); |
&Apache::lonxml::debug("skipping"); |
&Apache::lonxml::get_all_text("/notsolved",$$parser[$#$parser]); |
&Apache::lonxml::get_all_text("/notsolved",$parser); |
} |
} |
} |
} |
return ''; |
return ''; |
Line 753 sub start_solved {
|
Line 786 sub start_solved {
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
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); |
} |
} |
} |
} |
return ''; |
return ''; |
Line 775 sub end_startouttext {
|
Line 808 sub end_startouttext {
|
my $text=''; |
my $text=''; |
|
|
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$text=&Apache::lonxml::get_all_text("endouttext",$$parser[-1]); |
$text=&Apache::lonxml::get_all_text("endouttext",$parser); |
$result.=&Apache::edit::start_table($token)."<tr><td>Text Block</td> |
$result.=&Apache::edit::start_table($token)."<tr><td>Text Block</td> |
<td>Delete:". |
<td>Delete:". |
&Apache::edit::deletelist($target,$token) |
&Apache::edit::deletelist($target,$token) |
Line 786 sub end_startouttext {
|
Line 819 sub end_startouttext {
|
&Apache::edit::editfield($token->[1],$text,"",80,4); |
&Apache::edit::editfield($token->[1],$text,"",80,4); |
} |
} |
if ($target eq 'modified') { |
if ($target eq 'modified') { |
$text=&Apache::lonxml::get_all_text("endouttext",$$parser['-1']); |
$text=&Apache::lonxml::get_all_text("endouttext",$parser); |
$result='<startouttext />'.&Apache::edit::modifiedfield(); |
$result='<startouttext />'.&Apache::edit::modifiedfield(); |
} |
} |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
Line 811 sub end_endouttext {
|
Line 844 sub end_endouttext {
|
} |
} |
sub delete_startouttext { |
sub delete_startouttext { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
# my $text=&Apache::lonxml::get_all_text("endouttext",$$parser['-1']); |
# my $text=&Apache::lonxml::get_all_text("endouttext",$parser); |
my $text=$$parser['-1']->get_text("/endouttext"); |
my $text=$$parser['-1']->get_text("/endouttext"); |
my $ntoken=$$parser['-1']->get_token(); |
my $ntoken=$$parser['-1']->get_token(); |
&Apache::lonxml::debug("Deleting :$text: and :$ntoken->[0]:$ntoken->[1]:$ntoken->[2]: for startouttext"); |
&Apache::lonxml::debug("Deleting :$text: and :$ntoken->[0]:$ntoken->[1]:$ntoken->[2]: for startouttext"); |