Diff for /loncom/homework/structuretags.pm between versions 1.66 and 1.67

version 1.66, 2001/08/22 19:21:36 version 1.67, 2001/09/14 20:17:35
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') {  
           my $token=$Apache::lonhomework::history{"resource.0.outtoken"};  
           if (($ENV{'form.doescheckout'}) && (!$token)) {  
      $token=&Apache::lonxml::maketoken();  
              $Apache::lonhomework::history{"resource.0.outtoken"}=$token;  
           }  
           $body_tag_start.=&Apache::lonxml::printtokenheader($target,$token);  
       }  
   }  
   if ($target eq 'web' || $target eq 'grade') {    if ($target eq 'web' || $target eq 'grade') {
       #handle exam checkout
       if ($Apache::lonhomework::type eq 'exam') {
         my $token=$Apache::lonhomework::history{"resource.0.outtoken"};
         if (($ENV{'form.doescheckout'}) && (!$token)) {
    $token=&Apache::lonxml::maketoken();
    $Apache::lonhomework::history{"resource.0.outtoken"}=$token;
         }
         $body_tag_start.=&Apache::lonxml::printtokenheader($target,$token);
       }
   
       #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.   # if we are viewing someone else preserve that info
     '" value="'.$ENV{"form.grade_$field"}.'" />'."\n";   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 {

Removed from v.1.66  
changed lines
  Added in v.1.67


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>