--- loncom/homework/structuretags.pm 2001/09/14 20:17:35 1.67
+++ loncom/homework/structuretags.pm 2002/01/23 14:36:19 1.77
@@ -1,5 +1,30 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
+#
+# $Id: structuretags.pm,v 1.77 2002/01/23 14:36:19 sakharuk Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
# 2/19 Guy
# 6/26/2001 fixed extra web display at end of tags
# 8/17,8/18,8/20 Gerd Kortemeyer
@@ -68,7 +93,7 @@ sub initialize_storage {
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
if ($ENV{'request.state'} eq 'construct') {
%Apache::lonhomework::history=
- &Apache::lonnet::restore($ENV{'request.uri'},'nohist_construct',$domain,$name);
+ &Apache::lonnet::tmprestore($ENV{'request.uri'},'',$domain,$name);
my ($temp)=keys %Apache::lonhomework::history ;
&Apache::lonxml::debug("Return message of $temp");
} else {
@@ -90,9 +115,8 @@ sub finalize_storage {
if ( $temp ne '' ) {
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
if ($ENV{'request.state'} eq 'construct') {
- $result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,
- $ENV{'request.uri'},'nohist_construct',
- $domain,$name);
+ $result=&Apache::lonnet::tmpstore(\%Apache::lonhomework::results,
+ $ENV{'request.uri'},'',$domain,$name);
&Apache::lonxml::debug('Construct Store return message:'.$result);
} else {
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,
@@ -128,6 +152,9 @@ sub start_problem {
@Apache::inputtags::responselist = ();
@Apache::inputtags::previous=();
&initialize_storage();
+ if ($target eq 'web') {
+ &Apache::lonhomework::showhash(%Apache::lonhomework::history);
+ }
$Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type');
&Apache::lonxml::debug("Found this to be of type :$Apache::lonhomework::type:");
if ($Apache::lonhomework::type eq '') {
@@ -152,7 +179,7 @@ sub start_problem {
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
- if ($target eq 'web' || $target eq 'grade') {
+ if ($target eq 'web' || $target eq 'grade' || $target eq 'answer') {
#handle exam checkout
if ($Apache::lonhomework::type eq 'exam') {
my $token=$Apache::lonhomework::history{"resource.0.outtoken"};
@@ -210,8 +237,12 @@ sub start_problem {
$result.=
'
+
Random Seed:
';
+ $rndseed.'" />
+
+
+ ';
}
# if we are viewing someone else preserve that info
if (defined $ENV{'form.grade_symb'}) {
@@ -233,6 +264,7 @@ sub start_problem {
+
';
@@ -241,6 +273,8 @@ sub start_problem {
} elsif ($target eq 'modified') {
$result=$token->[4];
$result.=&Apache::edit::handle_insert();
+ } elsif ($target eq 'tex') {
+ $result .= '\begin{document}\noindent\textbf{Problem.}\newline';
} else {
# page_start returned a starting result, delete it if we don't need it
$result = '';
@@ -252,17 +286,20 @@ sub end_problem {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result='';
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' &&
$status eq 'CAN_ANSWER') {
# if part is zero, no s existed, so we need to the grading
&Apache::inputtags::grade;
- } elsif ($Apache::inputtags::part eq '0') {
+ } elsif ( $target eq 'web' && $Apache::inputtags::part eq '0') {
# if part is zero, no s existed, so we need show the current
# grading status
$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') {
$result.="