--- loncom/xml/lonxml.pm	2003/09/08 19:00:09	1.274
+++ loncom/xml/lonxml.pm	2003/09/27 04:08:56	1.281
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.274 2003/09/08 19:00:09 albertel Exp $
+# $Id: lonxml.pm,v 1.281 2003/09/27 04:08:56 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -105,6 +105,7 @@ use Apache::loncommon();
 use Apache::lonfeedback();
 use Apache::lonmsg();
 use Apache::loncacc();
+use Apache::lonlocal;
 
 #==================================================   Main subroutine: xmlparse  
 #debugging control, to turn on debugging modify the correct handler
@@ -159,6 +160,9 @@ $Apache::lonxml::usestyle=1;
 $Apache::lonxml::style_values='';
 $Apache::lonxml::style_end_values='';
 
+#array of ssi calls that need to occur after we are done parsing
+@Apache::lonxml::ssi_info=();
+
 sub xmlbegin {
   my $output='';
   if ($ENV{'browser.mathml'}) {
@@ -175,113 +179,13 @@ sub xmlbegin {
 }
 
 sub xmlend {
-    my ($discussiononly,$symb)=@_;
-    my $discussion='';
-    if ($ENV{'request.course.id'}) {
-       my $crs='/'.$ENV{'request.course.id'};
-       if ($ENV{'request.course.sec'}) {
-          $crs.='_'.$ENV{'request.course.sec'};
-       }                 
-       $crs=~s/\_/\//g;
-       my $seeid=&Apache::lonnet::allowed('rin',$crs);
-       unless ($symb) {
-           $symb=&Apache::lonnet::symbread();
-       }
-       if ($symb) {
-          my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
-                     $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
-		     $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
-          if ($contrib{'version'}) {
-              unless ($discussiononly) {
-                 $discussion.=
-                  '<address><hr />';
-	     }
-              my $idx;
-              for ($idx=1;$idx<=$contrib{'version'};$idx++) {
-		my $hidden=($contrib{'hidden'}=~/\.$idx\./);
-		my $deleted=($contrib{'deleted'}=~/\.$idx\./);
-		unless ((($hidden) && (!$seeid)) || ($deleted)) {
-                 my $message=$contrib{$idx.':message'};
-                 $message=~s/\n/\<br \/\>/g;
-		 $message=&Apache::lontexconvert::msgtexconverted($message);
-                 if ($contrib{$idx.':attachmenturl'}) {
-                     my ($fname,$ft)
-                        =($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/);
-		     $message.='<p>Attachment: <a href="'.
-	       &Apache::lonnet::tokenwrapper($contrib{$idx.':attachmenturl'}).
-                     '"><tt>'.$fname.'.'.$ft.'</tt></a>';
-                 }
-                 if ($message) {
-                  if ($hidden) {
-		      $message='<font color="#888888">'.$message.'</font>';
-                  }
-                  my $screenname=&Apache::loncommon::screenname(
-                               $contrib{$idx.':sendername'},
-			       $contrib{$idx.':senderdomain'});
-                  my $plainname=&Apache::loncommon::nickname(
-                               $contrib{$idx.':sendername'},
-			       $contrib{$idx.':senderdomain'});
-
-                  my $sender='Anonymous';
-                  if ((!$contrib{$idx.':anonymous'}) || ($seeid)) {
-                      $sender=&Apache::loncommon::aboutmewrapper(
-                               $plainname,
-                               $contrib{$idx.':sendername'},
-                               $contrib{$idx.':senderdomain'}).' ('.
-                              $contrib{$idx.':sendername'}.' at '.
-		      $contrib{$idx.':senderdomain'}.')';
-                      if ($contrib{$idx.':anonymous'}) {
-			  $sender.=' [anonymous] '.
-                                     $screenname;
-                      }
-                      if ($seeid) {
-			  if ($hidden) {
-                             $sender.=' <a href="/adm/feedback?unhide='.
-				 $symb.':::'.$idx.'">Make Visible</a>';
-                          } else {
-                             $sender.=' <a href="/adm/feedback?hide='.
-				 $symb.':::'.$idx.'">Hide</a>';
-			  }                     
-                          $sender.=' <a href="/adm/feedback?deldisc='.
-				 $symb.':::'.$idx.'">Delete</a>';
-                      }
-                  } else {
-                      if ($screenname) {
-			  $sender='<i>'.$screenname.'</i>';
-                      }
-                  }
-		  $discussion.='<p><b>'.$sender.'</b> ('.
-                      localtime($contrib{$idx.':timestamp'}).
-                      '):<blockquote>'.$message.
-                      '</blockquote></p>';
-	        }
-               } 
-              }
-              unless ($discussiononly) {
-                 $discussion.='</address>';
-	      }
-          }
-          if ($discussiononly) {
-	      $discussion.=(<<ENDDISCUSS);
-<form action="/adm/feedback" method="post" name="mailform" enctype="multipart/form-data">
-<input type="submit" name="discuss" value="Post Discussion" />
-<input type="submit" name="anondiscuss" value="Post Anonymous Discussion" />
-<input type="hidden" name="symb" value="$symb" />
-<input type="hidden" name="sendit" value="true" />
-<br />
-<font size="1">Note: in anonymous discussion, your name is visible only to
-course faculty</font><br />
-<textarea name=comment cols=60 rows=10 wrap=hard></textarea>
-<p>
-Attachment (128 KB max size): <input type="file" name="attachment" />
-</p>
-</form>
-ENDDISCUSS
-             $discussion.=&Apache::lonfeedback::generate_preview_button();
-          }
-       }
+    my $mode='xml';
+    my $status='OPEN';
+    if ($Apache::lonhomework::parsing_a_problem) {
+	$mode='problem';
+	$status=$Apache::inputtags::status[-1]; 
     }
-    return $discussion.($discussiononly?'':'</html>');
+    return &Apache::lonfeedback::list_discussion().'</html>';
 }
 
 sub tokeninputfield {
@@ -452,6 +356,7 @@ sub xmlparse {
  if ($ENV{'request.uri'}) {
     &writeallows($ENV{'request.uri'});
  }
+ &do_registered_ssi();
  if ($Apache::lonxml::counter_changed) { &store_counter() }
  return $finaloutput;
 }
@@ -591,9 +496,9 @@ sub inner_xmlparse {
       }
 
       # Encode any high ASCII characters
-      if (!$Apache::lonxml::prevent_entity_encode) {
-	$result=&HTML::Entities::encode($result,"\200-\377");
-      }
+#      if (!$Apache::lonxml::prevent_entity_encode) {
+#	$result=&HTML::Entities::encode($result,"\200-\377");
+#      }
       if ($Apache::lonxml::redirection) {
 	$Apache::lonxml::outputstack['-1'] .= $result;
       } else {
@@ -702,6 +607,7 @@ sub setup_globals {
   &init_counter();
   @Apache::lonxml::pwd=();
   @Apache::lonxml::extlinks=();
+  @Apache::lonxml::ssi_info=();
   if ($target eq 'meta') {
     $Apache::lonxml::redirection = 0;
     $Apache::lonxml::metamode = 1;
@@ -892,7 +798,7 @@ sub decreasedepth {
     $Apache::lonxml::olddepth=$Apache::lonxml::depth+1;
   }
   if (  $Apache::lonxml::depth < -1) {
-    &Apache::lonxml::warning("Missing tags, unable to properly run file.");
+    &Apache::lonxml::warning(&mt("Missing tags, unable to properly run file."));
     $Apache::lonxml::depth='-1';
   }
   my $curdepth=join('_',@Apache::lonxml::depthcounter);
@@ -1097,6 +1003,19 @@ sub writeallows {
     &Apache::lonnet::appenv(%httpref);
 }
 
+sub register_ssi {
+    my ($url,%form)=@_;
+    push (@Apache::lonxml::ssi_info,{'url'=>$url,'form'=>\%form});
+    return '';
+}
+
+sub do_registered_ssi {
+    foreach my $info (@Apache::lonxml::ssi_info) {
+	my %form=%{ $info->{'form'}};
+	my $url=$info->{'url'};
+	&Apache::lonnet::ssi($url,%form);
+    }
+}
 #
 # Afterburner handles anchors, highlights and links
 #
@@ -1187,21 +1106,24 @@ sub inserteditinfo {
       }
       my $cleanbut = '';
       if ($filetype eq 'html') {
-	  $cleanbut='<input type="submit" name="attemptclean" 
-                       value="Save and then attempt to clean HTML" />';
+	  $cleanbut='<input type="submit" name="attemptclean" value="'.
+	      &mt('Save and then attempt to clean HTML').'" />';
       }
       my $titledisplay=&display_title();
+      my %lt=&Apache::lonlocal::texthash('st' => 'Save this',
+					 'vi' => 'View',
+					 'ed' => 'Edit');
       my $buttons=(<<BUTTONS);
 $cleanbut
-<input type="submit" name="savethisfile" value="Save this" />
-<input type="submit" name="viewmode" value="View" />
+<input type="submit" name="savethisfile" value="$lt{'st'}" />
+<input type="submit" name="viewmode" value="$lt{'vi'}" />
 BUTTONS
       my $editfooter=(<<ENDFOOTER);
 <hr />
 <a name="editsection" />
 <form method="post">
 $xml_help
-<input type="hidden" name="editmode" value="Edit" />
+<input type="hidden" name="editmode" value="$lt{'ed'}" />
 $buttons<br />
 <textarea cols="80" rows="40" name="filecont">$filecontents</textarea>
 <br />$buttons
@@ -1249,9 +1171,9 @@ sub handler {
     $Apache::lonxml::debug=$ENV{'user.debug'};
     
     if ($ENV{'browser.mathml'}) {
-	$request->content_type('text/xml');
+	&Apache::loncommon::content_type($request,'text/xml');
     } else {
-	$request->content_type('text/html');
+	&Apache::loncommon::content_type($request,'text/html');
     }
     &Apache::loncommon::no_cache($request);
     $request->send_http_header;