File:  [LON-CAPA] / loncom / homework / lonhomework.pm
Revision 1.16: download - view: text, annotated - select for diffs
Tue Nov 21 18:39:35 2000 UTC (23 years, 6 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
- get and sets the current data for the homework

    1: # The LON-CAPA Homework handler
    2: # Guy Albertelli
    3: 
    4: package Apache::lonhomework;
    5: use strict;
    6: use Apache::style;
    7: use Apache::lonxml;
    8: use Apache::lonnet;
    9: use Apache::inputtags;
   10: use Apache::structuretags;
   11: use Apache::response;
   12: 
   13: 
   14: sub handler {
   15:   my $request=shift;
   16:   
   17:   my $target=&get_target();
   18:   $Apache::lonxml::debug=1;
   19:   if ($ENV{'browser.mathml'}) {
   20:     $request->content_type('text/xml');
   21:   } else {
   22:     $request->content_type('text/html');
   23:   }
   24:   $request->send_http_header;
   25:   return 'OK' if $request->header_only;
   26: 
   27:   &Apache::lonhomework::send_header($request);
   28:   my $file = &Apache::lonnet::filelocation("",$request->uri);
   29:   my %mystyle;
   30:   my $result = '';
   31:   &Apache::inputtags::initialize_inputtags;
   32:   %Apache::lonhomework::results=();
   33:   %Apache::lonhomework::history=&Apache::lonnet::restore;
   34:   #ignore error conditions
   35:   my ($temp)=keys %Apache::lonhomework::history ;
   36:   if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } 
   37: 
   38:   my $resultkey;
   39:   foreach $resultkey (sort keys %Apache::lonhomework::history) {
   40:     &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::history{$resultkey}");
   41:   }
   42:   &Apache::lonxml::debug("\n<br>restored values^</br>\n");
   43: 
   44:   my $problem=&Apache::lonnet::getfile($file);
   45:   if ($problem == -1) {
   46:     &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
   47:     $problem='';
   48:   }
   49:   my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm');
   50:   if ($default == -1) {
   51:     &Apache::lonxml::error("<b>Unable to find <i>$file</i></b>");
   52:     $default='';
   53:   }
   54: 
   55:   $result = Apache::lonxml::xmlparse($target, $problem,
   56: 				     $default.&setup_vars($target),%mystyle);
   57:   #$request->print("Result follows:");
   58:   $request->print($result);
   59:   #$request->print(":Result ends");
   60: 
   61:   foreach $resultkey (sort keys %Apache::lonhomework::results) {
   62:     &Apache::lonxml::debug("$resultkey ---- $Apache::lonhomework::results{$resultkey}");
   63:   }
   64:   &Apache::lonxml::debug("\n<br>storing values^</br>\n");
   65: 
   66:   &Apache::lonhomework::send_footer($request);
   67:   ($temp) = keys %Apache::lonhomework::results;
   68:   if ( $temp ne '' ) {
   69:     &Apache::lonxml::debug("Store return message:".&Apache::lonnet::cstore(%Apache::lonhomework::results));
   70:   }
   71:   return 'OK';
   72: }
   73: 
   74: sub get_target {
   75:   if ( $ENV{'request.state'} eq "published") {
   76:     return 'web';
   77:   } elsif ($ENV{'request.state'} eq "construct") {
   78:     if ( defined $ENV{'form.preview'}) {
   79:       return 'web';
   80:     } else {
   81:       return 'edit';
   82:     }
   83:   }
   84: }
   85: 
   86: sub setup_vars {
   87:   my ($target) = @_;
   88:   return ';'
   89: #  return ';$external::target='.$target.';';
   90: }
   91: 
   92: sub send_header {
   93:   my ($request)= @_;
   94:   $request->print(&Apache::lontexconvert::header());
   95:   $ENV{'request.uri'}=$request->uri;
   96: #  $request->print('<form name='.$ENV{'form.request.prefix'}.'lonhomework method="POST" action="'.$request->uri.'">');
   97: }
   98: 
   99: sub send_footer {
  100:   my ($request)= @_;
  101: #  $request->print('</form>');
  102:   $request->print(&Apache::lontexconvert::footer());
  103: }
  104: 
  105: sub getfilenothere {
  106:   my ($filename) = @_;
  107:   my $a="";
  108:   if (! -e $filename ) {
  109:     &Apache::lonnet::subscribe($filename);
  110:     &Apache::lonnet::repcopy($filename);
  111:   }
  112:   {
  113:     my $fh=Apache::File->new($filename);
  114: 
  115:     while (<$fh>) {
  116:       $a .=$_;
  117:     }
  118:   }
  119:   return $a
  120: }
  121: 
  122: 1;
  123: __END__

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