--- loncom/homework/structuretags.pm 2000/10/12 20:36:05 1.10
+++ loncom/homework/structuretags.pm 2000/12/19 23:22:22 1.23
@@ -6,19 +6,16 @@ use strict;
use Apache::lonnet;
sub BEGIN {
- &Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','outtext','web','tex'));
-}
-
-sub start_outtext {
-}
-
-sub end_outtext {
+ &Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','web','tex','part'));
}
sub start_web {
my ($target,$token,$parstack,$parser,$safeeval)=@_;
my $bodytext=&Apache::lonxml::get_all_text("/web",$$parser[$#$parser]);
- return $bodytext;
+ if ($target eq 'web') {
+ return $bodytext;
+ }
+ return '';
}
sub end_web {
@@ -27,6 +24,9 @@ sub end_web {
sub start_tex {
my ($target,$token,$parstack,$parser,$safeeval)=@_;
my $bodytext=&Apache::lonxml::get_all_text("/tex",$$parser[$#$parser]);
+ if ($target eq 'tex') {
+ return $bodytext
+ }
return '';
}
@@ -35,16 +35,66 @@ sub end_tex {
sub start_problem {
my ($target,$token,$parstack,$parser,$safeeval)=@_;
- my $args ='';
- if ( $#$parstack > -1 ) {
- $args=$$parstack[$#$parstack];
+
+#intialize globals
+ $Apache::inputtags::part='0';
+ @Apache::inputtags::responselist = ();
+
+#adeed vars to the scripting enviroment
+ my $expression='$external::part='.$Apache::inputtags::part.';';
+ &Apache::run::run($expression,$safeeval);
+ my $status;
+ my $datemsg;
+ if ($target ne 'meta') {
+ ($status,$datemsg) = &Apache::lonhomework::check_date('0');
+ push (@Apache::inputtags::status,$status);
+ if ( $status eq 'CLOSED' ) {
+ my $bodytext=&Apache::lonxml::get_all_text("/problem",$$parser[$#$parser]);
+ if ( $target eq "web" ) {
+ return "
Problem is not open to be viewed. The problem $datemsg
";
+ }
+ }
+ }
+ if ($target eq 'web') {
+ my $args ='';
+ if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
+ my $name = &Apache::run::run("{$args;".'return $name}',$safeeval);
+ if ($status eq 'CAN_ANSWER') {
+ # create a page header and exit
+ return "