[LON-CAPA-cvs] cvs: loncom /homework lonhomework.pm

albertel lon-capa-cvs@mail.lon-capa.org
Thu, 18 Sep 2003 19:59:15 -0000


This is a MIME encoded message

--albertel1063915155
Content-Type: text/plain

albertel		Thu Sep 18 15:59:15 2003 EDT

  Modified files:              
    /loncom/homework	lonhomework.pm 
  Log:
  - retabinate
  
  
--albertel1063915155
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20030918155915.txt"

Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.144 loncom/homework/lonhomework.pm:1.145
--- loncom/homework/lonhomework.pm:1.144	Wed Sep 17 14:16:39 2003
+++ loncom/homework/lonhomework.pm	Thu Sep 18 15:59:15 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Homework handler
 #
-# $Id: lonhomework.pm,v 1.144 2003/09/17 18:16:39 albertel Exp $
+# $Id: lonhomework.pm,v 1.145 2003/09/18 19:59:15 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -57,91 +57,91 @@
 #use Time::HiRes qw( gettimeofday tv_interval );
 
 BEGIN {
-  &Apache::lonxml::register_insert();
+    &Apache::lonxml::register_insert();
 }
 
 sub get_target {
-  if (($ENV{'request.state'} eq "published") ||
-      ($ENV{'request.state'} eq "uploaded")) {
-    if ( defined($ENV{'form.grade_target'}  ) 
-	 && ($ENV{'form.grade_target'} eq 'tex')) {
-      return ($ENV{'form.grade_target'});
-    } elsif ( defined($ENV{'form.grade_target'}  ) 
-	 && ($Apache::lonhomework::viewgrades eq 'F' )) {
-      return ($ENV{'form.grade_target'});
-    }
- 
-    if ( defined($ENV{'form.submitted'}) &&
-	 ( !defined($ENV{'form.resetdata'})) &&
-	 ( !defined($ENV{'form.newrandomization'}))) {
-      return ('grade', 'web');
-    } else {
-      return ('web');
-    }
-  } elsif ($ENV{'request.state'} eq "construct") {
-    if ( defined($ENV{'form.grade_target'}) ) {
-      return ($ENV{'form.grade_target'});
-    }
-    if ( defined($ENV{'form.preview'})) {
-      if ( defined($ENV{'form.submitted'})) {
-	return ('grade', 'web');
-      } else {
-	return ('web');
-      }
-    } else {
-      if ( $ENV{'form.problemmode'} eq 'View' ||
-	   $ENV{'form.problemmode'} eq 'Discard Edits and View') {
+    if (($ENV{'request.state'} eq "published") ||
+	($ENV{'request.state'} eq "uploaded")) {
+	if ( defined($ENV{'form.grade_target'}  ) 
+	     && ($ENV{'form.grade_target'} eq 'tex')) {
+	    return ($ENV{'form.grade_target'});
+	} elsif ( defined($ENV{'form.grade_target'}  ) 
+		  && ($Apache::lonhomework::viewgrades eq 'F' )) {
+	    return ($ENV{'form.grade_target'});
+	}
+
 	if ( defined($ENV{'form.submitted'}) &&
-	     (!defined($ENV{'form.resetdata'})) &&
-	     (!defined($ENV{'form.newrandomization'}))) {
-	  return ('grade', 'web','answer');
-	} else {
-	  return ('web','answer');
-	}
-      } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) {
-	if ( $ENV{'form.submitted'} eq 'edit' ) {
-	  if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
-	    return ('modified','web','answer');
-	  } else {
-	    return ('modified','edit');
-	  }
-	} else {
-	  return ('edit');
-	}
-      } else {
-	return ('web');
-      }
+	     ( !defined($ENV{'form.resetdata'})) &&
+	     ( !defined($ENV{'form.newrandomization'}))) {
+	    return ('grade', 'web');
+	} else {
+	    return ('web');
+	}
+    } elsif ($ENV{'request.state'} eq "construct") {
+	if ( defined($ENV{'form.grade_target'}) ) {
+	    return ($ENV{'form.grade_target'});
+	}
+	if ( defined($ENV{'form.preview'})) {
+	    if ( defined($ENV{'form.submitted'})) {
+		return ('grade', 'web');
+	    } else {
+		return ('web');
+	    }
+	} else {
+	    if ( $ENV{'form.problemmode'} eq 'View' ||
+		 $ENV{'form.problemmode'} eq 'Discard Edits and View') {
+		if ( defined($ENV{'form.submitted'}) &&
+		     (!defined($ENV{'form.resetdata'})) &&
+		     (!defined($ENV{'form.newrandomization'}))) {
+		    return ('grade', 'web','answer');
+		} else {
+		    return ('web','answer');
+		}
+	    } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) {
+		if ( $ENV{'form.submitted'} eq 'edit' ) {
+		    if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
+			return ('modified','web','answer');
+		    } else {
+			return ('modified','edit');
+		    }
+		} else {
+		    return ('edit');
+		}
+	    } else {
+		return ('web');
+	    }
+	}
     }
-  }
-  return ();
+    return ();
 }
 
 sub setup_vars {
-  my ($target) = @_;
-  return ';'
+    my ($target) = @_;
+    return ';'
 #  return ';$external::target='.$target.';';
 }
 
 sub send_header {
-  my ($request)= @_;
-  $request->print(&Apache::lontexconvert::header());
+    my ($request)= @_;
+    $request->print(&Apache::lontexconvert::header());
 #  $request->print('<form name='.$ENV{'form.request.prefix'}.'lonhomework method="POST" action="'.$request->uri.'">');
 }
 
 sub createmenu {
-  my ($which,$request)=@_;
-  if ($which eq 'grade') {
-    $request->print('<script language="JavaScript"> 
+    my ($which,$request)=@_;
+    if ($which eq 'grade') {
+	$request->print('<script language="JavaScript"> 
           hwkmenu=window.open("/res/adm/pages/homeworkmenu.html","homeworkremote",
                  "height=350,width=150,menubar=no");
           </script>');
-  }
+    }
 }
 
 sub send_footer {
-  my ($request)= @_;
+    my ($request)= @_;
 #  $request->print('</form>');
-  $request->print(&Apache::lontexconvert::footer());
+    $request->print(&Apache::lontexconvert::footer());
 }
 
 $Apache::lonxml::browse='';
@@ -149,83 +149,83 @@
 # JB, 9/24/2002: Any changes in this function may require a change
 # in lonnavmaps::resource::getDateStatus.
 sub check_access {
-  my ($id) = @_;
-  my $date ='';
-  my $status;
-  my $datemsg = '';
-  my $lastdate = '';
-  my $temp;
-  my $type;
-  my $passed;
-
-  if ($ENV{'request.state'} eq "construct") {
-    &Apache::lonxml::debug("in construction ignoring dates");
-    $status='CAN_ANSWER';
-    $datemsg='is in under construction';
-    return ($status,$datemsg);
-  }
-
-  &Apache::lonxml::debug("checking for part :$id:");
-  &Apache::lonxml::debug("time:".time);
-  foreach $temp ("opendate","duedate","answerdate") {
-    $lastdate = $date;
-    $date = &Apache::lonnet::EXT("resource.$id.$temp");
-    my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");
-    if ($thistype =~ /^(con_lost|no_such_host)/ ||
-	$date     =~ /^(con_lost|no_such_host)/) {
-	$status='UNAVAILABLE';
-	$date="may open later.";
-	return($status,$date);
-    }
-    if ($thistype eq 'date_interval') {
-	if ($temp eq 'opendate') {
-           $date=&Apache::lonnet::EXT("resource.$id.duedate")-$date;
-        }
-        if ($temp eq 'answerdate') {
-           $date=&Apache::lonnet::EXT("resource.$id.duedate")+$date;
-        }
-    }
-    &Apache::lonxml::debug("found :$date: for :$temp:");
-    if ($date eq '') {
-      $date = "an unknown date"; $passed = 0;
-    } elsif ($date eq 'con_lost') {
-      $date = "an indeterminate date"; $passed = 0;
-    } else {
-      if (time < $date) { $passed = 0; } else { $passed = 1; }
-      $date = localtime $date;
+    my ($id) = @_;
+    my $date ='';
+    my $status;
+    my $datemsg = '';
+    my $lastdate = '';
+    my $temp;
+    my $type;
+    my $passed;
+
+    if ($ENV{'request.state'} eq "construct") {
+	&Apache::lonxml::debug("in construction ignoring dates");
+	$status='CAN_ANSWER';
+	$datemsg='is in under construction';
+	return ($status,$datemsg);
+    }
+
+    &Apache::lonxml::debug("checking for part :$id:");
+    &Apache::lonxml::debug("time:".time);
+    foreach $temp ("opendate","duedate","answerdate") {
+	$lastdate = $date;
+	$date = &Apache::lonnet::EXT("resource.$id.$temp");
+	my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");
+	if ($thistype =~ /^(con_lost|no_such_host)/ ||
+	    $date     =~ /^(con_lost|no_such_host)/) {
+	    $status='UNAVAILABLE';
+	    $date="may open later.";
+	    return($status,$date);
+	}
+	if ($thistype eq 'date_interval') {
+	    if ($temp eq 'opendate') {
+		$date=&Apache::lonnet::EXT("resource.$id.duedate")-$date;
+	    }
+	    if ($temp eq 'answerdate') {
+		$date=&Apache::lonnet::EXT("resource.$id.duedate")+$date;
+	    }
+	}
+	&Apache::lonxml::debug("found :$date: for :$temp:");
+	if ($date eq '') {
+	    $date = "an unknown date"; $passed = 0;
+	} elsif ($date eq 'con_lost') {
+	    $date = "an indeterminate date"; $passed = 0;
+	} else {
+	    if (time < $date) { $passed = 0; } else { $passed = 1; }
+	    $date = localtime $date;
+	}
+	if (!$passed) { $type=$temp; last; }
     }
-    if (!$passed) { $type=$temp; last; }
-  }
-  &Apache::lonxml::debug("have :$type:$passed:");
-  if ($passed) {
-    $status='SHOW_ANSWER';
-    $datemsg=$date;
-  } elsif ($type eq 'opendate') {
-    $status='CLOSED';
-    $datemsg = "will open on $date";
-  } elsif ($type eq 'duedate') {
-    $status='CAN_ANSWER';
-    $datemsg = "is due at $date";
-  } elsif ($type eq 'answerdate') {
-    $status='CLOSED';
-    $datemsg = "was due on $lastdate, and answers will be available on $date";
-  }
-  if ($status eq 'CAN_ANSWER') {
-    #check #tries, and if correct.
-    my $tries = $Apache::lonhomework::history{"resource.$id.tries"};
-    my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries");
-    if ( $tries eq '' ) { $tries = '0'; }
-    if ( $maxtries eq '' ) { $maxtries = '2'; } 
-    if ($tries >= $maxtries) { $status = 'CANNOT_ANSWER'; }
-    # if (correct and show prob status) or excused then CANNOT_ANSWER
-    if(($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/
-	&&
-	lc($Apache::lonhomework::problemstatus) ne 'no')
-       ||
-       $Apache::lonhomework::history{"resource.$id.solved"}=~/^excused/) {
-	$status = 'CANNOT_ANSWER';
+    &Apache::lonxml::debug("have :$type:$passed:");
+    if ($passed) {
+	$status='SHOW_ANSWER';
+	$datemsg=$date;
+    } elsif ($type eq 'opendate') {
+	$status='CLOSED';
+	$datemsg = "will open on $date";
+    } elsif ($type eq 'duedate') {
+	$status='CAN_ANSWER';
+	$datemsg = "is due at $date";
+    } elsif ($type eq 'answerdate') {
+	$status='CLOSED';
+	$datemsg = "was due on $lastdate, and answers will be available on $date";
+    }
+    if ($status eq 'CAN_ANSWER') {
+	#check #tries, and if correct.
+	my $tries = $Apache::lonhomework::history{"resource.$id.tries"};
+	my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries");
+	if ( $tries eq '' ) { $tries = '0'; }
+	if ( $maxtries eq '' ) { $maxtries = '2'; } 
+	if ($tries >= $maxtries) { $status = 'CANNOT_ANSWER'; }
+	# if (correct and show prob status) or excused then CANNOT_ANSWER
+	if(($Apache::lonhomework::history{"resource.$id.solved"}=~/^correct/
+	    &&
+	    lc($Apache::lonhomework::problemstatus) ne 'no')
+	   ||
+	   $Apache::lonhomework::history{"resource.$id.solved"}=~/^excused/) {
+	    $status = 'CANNOT_ANSWER';
+	}
     }
-  }
 
   #if (($status ne 'CLOSED') && ($Apache::lonhomework::type eq 'exam') &&
   #    (!$Apache::lonhomework::history{"resource.0.outtoken"})) {
@@ -233,20 +233,20 @@
   #}
 
 
-  &Apache::lonxml::debug("sending back :$status:$datemsg:");
-  if (($Apache::lonhomework::browse eq 'F') && ($status eq 'CLOSED')) {
-    &Apache::lonxml::debug("should be allowed to browse a resource when closed");
-    $status='CAN_ANSWER';
-    $datemsg='is closed but you are allowed to view it';
-  }
+    &Apache::lonxml::debug("sending back :$status:$datemsg:");
+    if (($Apache::lonhomework::browse eq 'F') && ($status eq 'CLOSED')) {
+	&Apache::lonxml::debug("should be allowed to browse a resource when closed");
+	$status='CAN_ANSWER';
+	$datemsg='is closed but you are allowed to view it';
+    }
 
-  return ($status,$datemsg);
+    return ($status,$datemsg);
 }
 
 sub showhash {
-  my (%hash) = @_;
-  &showhashsubset(\%hash,'.');
-  return '';
+    my (%hash) = @_;
+    &showhashsubset(\%hash,'.');
+    return '';
 }
 
 sub showarray {
@@ -267,40 +267,40 @@
 }
 
 sub showhashsubset {
-  my ($hash,$keyre) = @_;
-  my $resultkey;
-  foreach $resultkey (sort keys %$hash) {
-    if ($resultkey =~ /$keyre/) {
-      if (ref($$hash{$resultkey})) {
-	if ($$hash{$resultkey} =~ /ARRAY/ ) {
-	    &Apache::lonxml::debug("$resultkey ---- ".
-				   &showarray($$hash{$resultkey}));
-	} elsif ($$hash{$resultkey} =~ /HASH/ ) {
-	    &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
-	    &showhashsubset($$hash{$resultkey},'.');
-	} else {
-	    &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
-	}
-      } else {
-	&Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
-      }
-    }
-  }
-  &Apache::lonxml::debug("\n<br />restored values^</br>\n");
-  return '';
+    my ($hash,$keyre) = @_;
+    my $resultkey;
+    foreach $resultkey (sort keys %$hash) {
+	if ($resultkey =~ /$keyre/) {
+	    if (ref($$hash{$resultkey})) {
+		if ($$hash{$resultkey} =~ /ARRAY/ ) {
+		    &Apache::lonxml::debug("$resultkey ---- ".
+					   &showarray($$hash{$resultkey}));
+		} elsif ($$hash{$resultkey} =~ /HASH/ ) {
+		    &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
+		    &showhashsubset($$hash{$resultkey},'.');
+		} else {
+		    &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
+		}
+	    } else {
+		&Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
+	    }
+	}
+    }
+    &Apache::lonxml::debug("\n<br />restored values^</br>\n");
+    return '';
 }
 
 sub setuppermissions {
-  $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
-  my $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
-  if (! $viewgrades && 
-      exists($ENV{'request.course.sec'}) && 
-      $ENV{'request.course.sec'} !~ /^\s*$/) {
-      $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'}.
+    $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
+    my $viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
+    if (! $viewgrades && 
+	exists($ENV{'request.course.sec'}) && 
+	$ENV{'request.course.sec'} !~ /^\s*$/) {
+	$viewgrades = &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'}.
                                                '/'.$ENV{'request.course.sec'});
-  }
-  $Apache::lonhomework::viewgrades = $viewgrades;
-  return ''
+    }
+    $Apache::lonhomework::viewgrades = $viewgrades;
+    return ''
 }
 
 sub setupheader {
@@ -320,42 +320,42 @@
 }
 
 sub handle_save_or_undo {
-  my ($request,$problem,$result) = @_;
-  my $file    = &Apache::lonnet::filelocation("",$request->uri);
-  my $filebak =$file.".bak";
-  my $filetmp =$file.".tmp";
-  my $error=0;
-
-  if ($ENV{'form.Undo'} eq 'undo') {
+    my ($request,$problem,$result) = @_;
+    my $file    = &Apache::lonnet::filelocation("",$request->uri);
+    my $filebak =$file.".bak";
+    my $filetmp =$file.".tmp";
     my $error=0;
-    if (!copy($file,$filetmp)) { $error=1; }
-    if ((!$error) && (!copy($filebak,$file))) { $error=1; }
-    if ((!$error) && (!move($filetmp,$filebak))) { $error=1; }
-    if (!$error) {
-      $request->print("<p><b>Undid changes, Switched $filebak and $file</b></p>");
-    } else {
-      $request->print("<p><font color=\"red\" size=\"+1\"><b>Unable to undo, unable to switch $filebak and $file</b></font></p>");
-      $error=1;
-    }
-  } else {
-    my $fs=Apache::File->new(">$filebak");
-    if (defined($fs)) {
-      print $fs $$problem;
-      $request->print("<b>Making Backup to $filebak</b><br />");
-    } else {
-      $request->print("<font color=\"red\" size=\"+1\"><b>Unable to make backup $filebak</b></font>");
-      $error=2;
-    }
-    my $fh=Apache::File->new(">$file");
-    if (defined($fh)) {
-      print $fh $$result;
-      $request->print("<b>Saving Modifications to $file</b><br />");
+
+    if ($ENV{'form.Undo'} eq 'undo') {
+	my $error=0;
+	if (!copy($file,$filetmp)) { $error=1; }
+	if ((!$error) && (!copy($filebak,$file))) { $error=1; }
+	if ((!$error) && (!move($filetmp,$filebak))) { $error=1; }
+	if (!$error) {
+	    $request->print("<p><b>Undid changes, Switched $filebak and $file</b></p>");
+	} else {
+	    $request->print("<p><font color=\"red\" size=\"+1\"><b>Unable to undo, unable to switch $filebak and $file</b></font></p>");
+	    $error=1;
+	}
     } else {
-      $request->print("<font color=\"red\" size=\"+1\"><b>Unable to write to $file</b></font>");
-      $error|=4;
+	my $fs=Apache::File->new(">$filebak");
+	if (defined($fs)) {
+	    print $fs $$problem;
+	    $request->print("<b>Making Backup to $filebak</b><br />");
+	} else {
+	    $request->print("<font color=\"red\" size=\"+1\"><b>Unable to make backup $filebak</b></font>");
+	    $error=2;
+	}
+	my $fh=Apache::File->new(">$file");
+	if (defined($fh)) {
+	    print $fh $$result;
+	    $request->print("<b>Saving Modifications to $file</b><br />");
+	} else {
+	    $request->print("<font color=\"red\" size=\"+1\"><b>Unable to write to $file</b></font>");
+	    $error|=4;
+	}
     }
-  }
-  return $error;
+    return $error;
 }
 
 sub analyze_header {
@@ -364,7 +364,7 @@
             <head><title>Analyzing a problem</title></head>
             <body bgcolor="#FFFFFF">
             <form name="lonhomework" method="POST" action="'.
-	      $ENV{'request.uri'}.'">
+	    $ENV{'request.uri'}.'">
             <input type="submit" name="problemmode" value="EditXML" />
             <input type="submit" name="problemmode" value="Edit" />
             <hr />
@@ -452,33 +452,33 @@
 }
 
 sub editxmlmode {
-  my ($request,$file) = @_;
-  my $result;
-  my $problem=&Apache::lonnet::getfile($file);
-  if ($problem eq -1) {
-    &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
-    $problem='';
-  }
-  if (defined($ENV{'form.editxmltext'}) || defined($ENV{'form.Undo'})) {
-    my $error=&handle_save_or_undo($request,\$problem,
-				   \$ENV{'form.editxmltext'});
-    if (!$error) { $problem=&Apache::lonnet::getfile($file); }
-  }
-  &Apache::lonhomework::showhashsubset(\%ENV,'^form');
-  if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
+    my ($request,$file) = @_;
+    my $result;
+    my $problem=&Apache::lonnet::getfile($file);
+    if ($problem eq -1) {
+	&Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
+	$problem='';
+    }
+    if (defined($ENV{'form.editxmltext'}) || defined($ENV{'form.Undo'})) {
+	my $error=&handle_save_or_undo($request,\$problem,
+				       \$ENV{'form.editxmltext'});
+	if (!$error) { $problem=&Apache::lonnet::getfile($file); }
+    }
     &Apache::lonhomework::showhashsubset(\%ENV,'^form');
-    $ENV{'form.problemmode'}='View';
-    &renderpage($request,$file);
-  } else {
-    my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);
-    my $xml_help = Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index",
-							  "Problem Editing Help");
-    if ($cols > 80) { $cols = 80; }
-    if ($cols < 70) { $cols = 70; }
-    if ($rows < 20) { $rows = 20; }
-    $result.='<html><body bgcolor="#FFFFFF">
+    if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
+	&Apache::lonhomework::showhashsubset(\%ENV,'^form');
+	$ENV{'form.problemmode'}='View';
+	&renderpage($request,$file);
+    } else {
+	my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);
+	my $xml_help = Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index",
+							      "Problem Editing Help");
+	if ($cols > 80) { $cols = 80; }
+	if ($cols < 70) { $cols = 70; }
+	if ($rows < 20) { $rows = 20; }
+	$result.='<html><body bgcolor="#FFFFFF">
             <form name="lonhomework" method="POST" action="'.
-	      $ENV{'request.uri'}.'">
+	    $ENV{'request.uri'}.'">
             <input type="hidden" name="problemmode" value="EditXML" />
             <input type="submit" name="problemmode" value="Discard Edits and View" />
             <input type="submit" name="problemmode" value="Edit" />
@@ -489,78 +489,78 @@
             <hr />
             ' . $xml_help . '
             <textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'.
-	      &HTML::Entities::encode($problem).'</textarea>
+	    &HTML::Entities::encode($problem).'</textarea>
             </form></body></html>';
-    $request->print($result);
-  }
-  return '';
+	$request->print($result);
+    }
+    return '';
 }
 
 sub renderpage {
-  my ($request,$file) = @_;
+    my ($request,$file) = @_;
 
-  my (@targets) = &get_target();
-  &Apache::lonxml::debug("Running targets ".join(':',@targets));
-  foreach my $target (@targets) {
-    #my $t0 = [&gettimeofday()];
-    my $problem=&Apache::lonnet::getfile($file);
-    if ($problem eq -1) {
-      &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
-      $problem='';
-    }
+    my (@targets) = &get_target();
+    &Apache::lonxml::debug("Running targets ".join(':',@targets));
+    foreach my $target (@targets) {
+	#my $t0 = [&gettimeofday()];
+	my $problem=&Apache::lonnet::getfile($file);
+	if ($problem eq -1) {
+	    &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
+	    $problem='';
+	}
 
-    my %mystyle;
-    my $result = '';
-    if ($target eq 'analyze') { %Apache::lonhomework::analyze=(); }
-    if ($target eq 'answer') { &showhash(%Apache::lonhomework::history); }
-    if ($target eq 'web') {&Apache::lonhomework::showhashsubset(\%ENV,'^form');}
-
-    &Apache::lonxml::debug("Should be parsing now");
-    $result = &Apache::lonxml::xmlparse($request, $target, $problem,
-			&setup_vars($target),%mystyle);
-    undef($Apache::lonhomework::parsing_a_problem);
-    #$request->print("Result follows:");
-    if ($target eq 'modified') {
-      &handle_save_or_undo($request,\$problem,\$result);
-    } else {
-      if ($target eq 'analyze') {
-	$result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze);
-	undef(%Apache::lonhomework::analyze);
-      }
-      #my $td=&tv_interval($t0);
-      #if ( $Apache::lonxml::debug) {
-	#$result =~ s:</body>::;
-	#$result.="<br />Spent $td seconds processing target $target\n</body>";
-      #}
-      $request->print($result);
-      $request->rflush();
+	my %mystyle;
+	my $result = '';
+	if ($target eq 'analyze') { %Apache::lonhomework::analyze=(); }
+	if ($target eq 'answer') { &showhash(%Apache::lonhomework::history); }
+	if ($target eq 'web') {&Apache::lonhomework::showhashsubset(\%ENV,'^form');}
+
+	&Apache::lonxml::debug("Should be parsing now");
+	$result = &Apache::lonxml::xmlparse($request, $target, $problem,
+					    &setup_vars($target),%mystyle);
+	undef($Apache::lonhomework::parsing_a_problem);
+	#$request->print("Result follows:");
+	if ($target eq 'modified') {
+	    &handle_save_or_undo($request,\$problem,\$result);
+	} else {
+	    if ($target eq 'analyze') {
+		$result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze);
+		undef(%Apache::lonhomework::analyze);
+	    }
+	    #my $td=&tv_interval($t0);
+	    #if ( $Apache::lonxml::debug) {
+	    #$result =~ s:</body>::;
+	    #$result.="<br />Spent $td seconds processing target $target\n</body>";
+	    #}
+	    $request->print($result);
+	    $request->rflush();
+	}
+	#$request->print(":Result ends");
+	#my $td=&tv_interval($t0);
     }
-    #$request->print(":Result ends");
-    #my $td=&tv_interval($t0);
-  }
 }
 
 # with no arg it returns a HTML <option> list of the template titles
 # with one arg it returns the filename associated with the arg passed
 sub get_template_list {
-  my ($namewanted,$extension) = @_;
-  my $result;
-  my @allnames;
-  &Apache::lonxml::debug("Looking for :$extension:");
-  foreach my $file (</home/httpd/html/res/adm/includes/templates/*.$extension>) {
-    my $name=&Apache::lonnet::metadata($file,'title');
-    if ($namewanted && ($name eq $namewanted)) {
-      $result=$file;
-      last;
-    } else {
-	if ($name) { push (@allnames, $name); }
+    my ($namewanted,$extension) = @_;
+    my $result;
+    my @allnames;
+    &Apache::lonxml::debug("Looking for :$extension:");
+    foreach my $file (</home/httpd/html/res/adm/includes/templates/*.$extension>) {
+	my $name=&Apache::lonnet::metadata($file,'title');
+	if ($namewanted && ($name eq $namewanted)) {
+	    $result=$file;
+	    last;
+	} else {
+	    if ($name) { push (@allnames, $name); }
+	}
+    }
+    if (@allnames && !$result) {
+	$result="<option>Select a $extension template</option>\n<option>".
+	    join('</option><option>',sort(@allnames)).'</option>';
     }
-  }
-  if (@allnames && !$result) {
-    $result="<option>Select a $extension template</option>\n<option>".
-	join('</option><option>',sort(@allnames)).'</option>';
-  }
-  return $result;
+    return $result;
 }
 
 sub newproblem {
@@ -614,9 +614,9 @@
 }
 
 sub view_or_edit_menu {
-  my ($request) = @_;
-  my $url=$request->uri;
-  $request->print(<<EDITMENU);
+    my ($request) = @_;
+    my $url=$request->uri;
+    $request->print(<<EDITMENU);
 <body bgcolor="#FFFFFF">
 <form action="$url" method="POST">
 Would you like to <input type="submit" name="problemmode" value="View"> or
@@ -627,85 +627,85 @@
 }
 
 sub handler {
-  #my $t0 = [&gettimeofday()];
-  my $request=$_[0];
+    #my $t0 = [&gettimeofday()];
+    my $request=$_[0];
+    
+    $Apache::lonxml::debug=$ENV{'user.debug'};
 
-  $Apache::lonxml::debug=$ENV{'user.debug'};
+    if (&setupheader($request)) { return OK; }
+    $ENV{'request.uri'}=$request->uri;
 
-  if (&setupheader($request)) { return OK; }
-  $ENV{'request.uri'}=$request->uri;
+    #setup permissions
+    $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
+    $Apache::lonhomework::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
+    &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");
+    # some times multiple problemmodes are submitted, need to select
+    # the last one
+    &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
+    if ( defined($ENV{'form.problemmode'}) &&
+	 ref($ENV{'form.problemmode'}) ) {
+	&Apache::lonxml::debug("Problem Mode ".join(",",@$ENV{'form.problemmode'}));
+	my $mode=$ENV{'form.problemmode'}->[-1];
+	undef $ENV{'form.problemmode'};
+	$ENV{'form.problemmode'}=$mode;
+    }
+    &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
+    my $file=&Apache::lonnet::filelocation("",$request->uri);
+
+    #check if we know where we are
+    if ($ENV{'request.course.fn'} && !&Apache::lonnet::symbread()) { 
+	# if we are browsing we might not be able to know where we are
+	if ($Apache::lonhomework::browse ne 'F') {
+	    #should know where we are, so ask
+	    if ( &Apache::lonnet::mod_perl_version() == 2 ) {
+		&Apache::lonnet::cleanenv();
+	    }
+	    $request->internal_redirect('/adm/ambiguous'); return;
+	}
+    }
 
-  #setup permissions
-  $Apache::lonhomework::browse= &Apache::lonnet::allowed('bre',$ENV{'request.filename'});
-  $Apache::lonhomework::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
-  &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");
-  # some times multiple problemmodes are submitted, need to select
-  # the last one
-  &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
-  if ( defined($ENV{'form.problemmode'}) &&
-       ref($ENV{'form.problemmode'}) ) {
-    &Apache::lonxml::debug("Problem Mode ".join(",",@$ENV{'form.problemmode'}));
-    my $mode=$ENV{'form.problemmode'}->[-1];
-    undef $ENV{'form.problemmode'};
-    $ENV{'form.problemmode'}=$mode;
-  }
-  &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
-  my $file=&Apache::lonnet::filelocation("",$request->uri);
-
-  #check if we know where we are
-  if ($ENV{'request.course.fn'} && !&Apache::lonnet::symbread()) { 
-    # if we are browsing we might not be able to know where we are
-    if ($Apache::lonhomework::browse ne 'F') {
-      #should know where we are, so ask
-	if ( &Apache::lonnet::mod_perl_version() == 2 ) {
-	    &Apache::lonnet::cleanenv();
-	}
-	$request->internal_redirect('/adm/ambiguous'); return;
-    }
-  }
-
-  my ($symb) = &Apache::lonxml::whichuser();
-  &Apache::lonxml::debug('symb is '.$symb);
-  if ($ENV{'request.state'} eq "construct" || $symb eq '') {
-      if ($ENV{'form.resetdata'} eq 'Reset Submissions' ||
-	  $ENV{'form.resetdata'} eq 'New Problem Variation' ||
-          $ENV{'form.newrandomization'} eq 'New Randomization') {
-	  my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
-	  &Apache::lonnet::tmpreset($symb,'',$domain,$name);
-&Apache::lonxml::debug("Attempt reset");
-      }
-  }
-  if ($ENV{'request.state'} eq "construct") {
-    if ( -e $file ) {
-      &Apache::loncommon::get_unprocessed_cgi
-                          ($ENV{'QUERY_STRING'},['problemmode']);
-      if (!(defined $ENV{'form.problemmode'})) {
-	#first visit to problem in construction space
-	#&view_or_edit_menu($request);
-	$ENV{'form.problemmode'}='View';
-	&renderpage($request,$file);
-      } elsif ($ENV{'form.problemmode'} eq 'EditXML') {
-	&editxmlmode($request,$file);
-      } elsif ($ENV{'form.problemmode'} eq 'Calculate answers') {
-	&analyze($request,$file);
-      } else {
-	&renderpage($request,$file);
-      }
+    my ($symb) = &Apache::lonxml::whichuser();
+    &Apache::lonxml::debug('symb is '.$symb);
+    if ($ENV{'request.state'} eq "construct" || $symb eq '') {
+	if ($ENV{'form.resetdata'} eq 'Reset Submissions' ||
+	    $ENV{'form.resetdata'} eq 'New Problem Variation' ||
+	    $ENV{'form.newrandomization'} eq 'New Randomization') {
+	    my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+	    &Apache::lonnet::tmpreset($symb,'',$domain,$name);
+	    &Apache::lonxml::debug("Attempt reset");
+	}
+    }
+    if ($ENV{'request.state'} eq "construct") {
+	if ( -e $file ) {
+	    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+						    ['problemmode']);
+	    if (!(defined $ENV{'form.problemmode'})) {
+		#first visit to problem in construction space
+		#&view_or_edit_menu($request);
+		$ENV{'form.problemmode'}='View';
+		&renderpage($request,$file);
+	    } elsif ($ENV{'form.problemmode'} eq 'EditXML') {
+		&editxmlmode($request,$file);
+	    } elsif ($ENV{'form.problemmode'} eq 'Calculate answers') {
+		&analyze($request,$file);
+	    } else {
+		&renderpage($request,$file);
+	    }
+	} else {
+	    # requested file doesn't exist in contruction space
+	    &newproblem($request);
+	}
     } else {
-      # requested file doesn't exist in contruction space
-      &newproblem($request);
+	# just render the page normally outside of construction space
+	&Apache::lonxml::debug("not construct");
+	&renderpage($request,$file);
     }
-  } else {
-    # just render the page normally outside of construction space
-    &Apache::lonxml::debug("not construct");
-    &renderpage($request,$file);
-  }
-  #my $td=&tv_interval($t0);
-  #&Apache::lonxml::debug("Spent $td seconds processing");
-  # &Apache::lonhomework::send_footer($request);
-  # always turn off debug messages
-  $Apache::lonxml::debug=0;
-  return OK;
+    #my $td=&tv_interval($t0);
+    #&Apache::lonxml::debug("Spent $td seconds processing");
+    # &Apache::lonhomework::send_footer($request);
+    # always turn off debug messages
+    $Apache::lonxml::debug=0;
+    return OK;
 
 }
 

--albertel1063915155--