--- loncom/xml/lonxml.pm	2002/01/03 16:18:00	1.145
+++ loncom/xml/lonxml.pm	2002/01/17 17:42:34	1.149
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.145 2002/01/03 16:18:00 www Exp $
+# $Id: lonxml.pm,v 1.149 2002/01/17 17:42:34 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1011,6 +1011,8 @@ sub storefile {
     if (my $fh=Apache::File->new('>'.$file)) {
 	print $fh $contents;
         $fh->close();
+    } else {
+      &warning("Unable to save file $file");
     }
 }
 
@@ -1032,19 +1034,23 @@ sub inserteditinfo {
 </html>
 SIMPLECONTENT
       }
-      my $editheader='<a href="#editsection">Edit below</a><hr />';
+
+      $filecontents =~ s:</textarea>:&lt;/textarea&gt;:ig;
+#      my $editheader='<a href="#editsection">Edit below</a><hr />';
       my $editfooter=(<<ENDFOOTER);
 <hr />
 <a name="editsection" />
 <form method="post">
 <textarea cols="80" rows="40" name="filecont">$filecontents</textarea>
 <br />
+<input type="hidden" name="showmode" value="Edit" />
 <input type="submit" name="attemptclean" 
        value="Save and then attempt to clean HTML" />
 <input type="submit" name="savethisfile" value="Save this" />
+<input type="submit" name="showmode" value="View" />
 </form>
 ENDFOOTER
-      $result=~s/(\<body[^\>]*\>)/$1$editheader/is;
+#      $result=~s/(\<body[^\>]*\>)/$1$editheader/is;
       $result=~s/(\<\/body\>)/$editfooter/is;
       return $result;
 }
@@ -1077,7 +1083,7 @@ sub handler {
       }
   }
   my %mystyle;
-  my $result = ''; 
+  my $result = '';
   my $filecontents=&Apache::lonnet::getfile($file);
   if ($filecontents == -1) {
     $result=(<<ENDNOTFOUND);
@@ -1092,41 +1098,47 @@ sub handler {
 ENDNOTFOUND
     $filecontents='';
   } else {
-      unless ($ENV{'request.state'} eq 'published') {
-         if ($ENV{'form.attemptclean'}) {
-	    $filecontents=&htmlclean($filecontents,1);
-         }
+    unless ($ENV{'request.state'} eq 'published') {
+      if ($ENV{'form.attemptclean'}) {
+	$filecontents=&htmlclean($filecontents,1);
       }
-    $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle);
+    }
+    if ($ENV{'form.showmode'} ne 'Edit') {
+      $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle);
+    }
   }
 
 #
 # Edit action? Insert editing commands
 #
   unless ($ENV{'request.state'} eq 'published') {
+    if ($ENV{'form.showmode'} eq 'Edit') {
+      $result='<html><body bgcolor="#FFFFFF"></body></html>';
       $result=&inserteditinfo($result,$filecontents);
+    }
   }
-  
+
   writeallows($request->uri);
 
   $request->print($result);
 
   return OK;
 }
- 
+
 sub debug {
   if ($Apache::lonxml::debug eq 1) {
-    print("DEBUG:".$_[0]."<br />\n");
+    $|=1;
+    print("DEBUG:".join('<br />',@_)."<br />\n");
   }
 }
 
 sub error {
   if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) {
-    print "<b>ERROR:</b>".$_[0]."<br />\n";
+    print "<b>ERROR:</b>".join('<br />',@_)."<br />\n";
   } else {
     print "<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />";
     #notify author
-    &Apache::lonmsg::author_res_msg($ENV{'request.filename'},$_[0]);
+    &Apache::lonmsg::author_res_msg($ENV{'request.filename'},join('<br />',@_));
     #notify course
     if ( $ENV{'request.course.id'} ) {
       my $users=$ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'};
@@ -1134,19 +1146,19 @@ sub error {
       foreach my $user (split /\,/, $users) {
 	($user,my $domain) = split /:/, $user;
 	&Apache::lonmsg::user_normal_msg($user,$domain,
-        "Error [$declutter]",$_[0]);
+        "Error [$declutter]",join('<br />',@_));
       }
     }
 
     #FIXME probably shouldn't have me get everything forever.
-    &Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",$_[0]);
+    &Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",join('<br />',@_));
     #&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]);
   }
 }
 
 sub warning {
   if ($ENV{'request.state'} eq 'construct') {
-    print "<b>W</b>ARNING<b>:</b>".$_[0]."<br />\n";
+    print "<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n";
   }
 }