Diff for /loncom/homework/lonhomework.pm between versions 1.1 and 1.17

version 1.1, 2000/07/25 17:45:40 version 1.17, 2000/11/30 16:20:49
Line 1 Line 1
 # The LON-CAPA Homework handler  # The LON-CAPA Homework handler
 # Guy Albertelli  # Guy Albertelli
   # 11/30 Gerd Kortemeyer
   
 package Apache::lonhomework;  package Apache::lonhomework;
 use strict;  use strict;
 use Apache::style;  use Apache::style;
 use Apache::lonxml;  use Apache::lonxml;
   use Apache::lonnet;
   use Apache::inputtags;
   use Apache::structuretags;
   use Apache::response;
   
   
   sub subhandler {
     my ($target,$problem)=@_;
     my %mystyle;
     my $result = '';
     &Apache::inputtags::initialize_inputtags;
     %Apache::lonhomework::results=();
     %Apache::lonhomework::history=&Apache::lonnet::restore;
     #ignore error conditions
     my ($temp)=keys %Apache::lonhomework::history ;
     if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } 
   
     my $resultkey;
     foreach $resultkey (sort keys %Apache::lonhomework::history) {
       &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::history{$resultkey}");
     }
     &Apache::lonxml::debug("\n<br>restored values^</br>\n");
     my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm');
     if ($default == -1) {
       &Apache::lonxml::error("<b>Unable to find <i>default_homework.lcpm</i></b>");
       $default='';
     }
   
     return Apache::lonxml::xmlparse($target, $problem,
        $default.&setup_vars($target),%mystyle);
   }
   
   sub get_target {
     if ( $ENV{'request.state'} eq "published") {
       return 'web';
     } elsif ($ENV{'request.state'} eq "construct") {
       if ( defined $ENV{'form.preview'}) {
         return 'web';
       } else {
         return 'edit';
       }
     }
   }
   
   sub setup_vars {
     my ($target) = @_;
     return ';'
   #  return ';$external::target='.$target.';';
   }
   
   sub send_header {
     my ($request)= @_;
     $request->print(&Apache::lontexconvert::header());
     $ENV{'request.uri'}=$request->uri;
   #  $request->print('<form name='.$ENV{'form.request.prefix'}.'lonhomework method="POST" action="'.$request->uri.'">');
   }
   
   sub send_footer {
     my ($request)= @_;
   #  $request->print('</form>');
     $request->print(&Apache::lontexconvert::footer());
   }
   
   sub getfilenothere {
     my ($filename) = @_;
     my $a="";
     if (! -e $filename ) {
       &Apache::lonnet::subscribe($filename);
       &Apache::lonnet::repcopy($filename);
     }
     {
       my $fh=Apache::File->new($filename);
   
       while (<$fh>) {
         $a .=$_;
       }
     }
     return $a
   }
   
 sub handler {  sub handler {
   my $request=shift;    my $request=shift;
   
   my @parsecontents;    $Apache::lonxml::debug=1;
   {    if ($ENV{'browser.mathml'}) {
     my $fh=Apache::File->new($request->filename);      $request->content_type('text/xml');
     @parsecontents=<$fh>;    } else {
       $request->content_type('text/html');
   }    }
     
   my $parsestring=join('',@parsecontents);  
     
   $request->content_type('text/html');  
   $request->send_http_header;    $request->send_http_header;
   $request->print('<html>    return 'OK' if $request->header_only;
 <form method="post" action="'.$request->uri.'"<input type="hidden" name="TARGET" value="edit"><input type="submit" value="Submit">');  
     &Apache::lonhomework::send_header($request);
     my $file=&Apache::lonnet::filelocation("",$request->uri);
     my $problem=&Apache::lonnet::getfile($file);
     if ($problem == -1) {
       &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
       $problem='';
     }
   
     my $result=&subhandler(&get_target(),$problem);
   
     #$request->print("Result follows:");
     $request->print($result);
     #$request->print(":Result ends");
   
     my $temp;
     my $resultkey;
     foreach $resultkey (sort keys %Apache::lonhomework::results) {
       &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::results{$resultkey}");
     }
     &Apache::lonxml::debug("\n<br>storing values^</br>\n");
   
     &Apache::lonhomework::send_footer($request);
     ($temp) = keys %Apache::lonhomework::results;
     if ( $temp ne '' ) {
       &Apache::lonxml::debug("Store return message:".&Apache::lonnet::cstore(%Apache::lonhomework::results));
     }
     return 'OK';
   
 }  }
   
 1;  1;

Removed from v.1.1  
changed lines
  Added in v.1.17


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