Diff for /loncom/homework/lonhomework.pm between versions 1.75 and 1.83

version 1.75, 2002/03/29 19:19:21 version 1.83, 2002/07/29 20:40:34
Line 28 Line 28
 # Guy Albertelli  # Guy Albertelli
 # 11/30 Gerd Kortemeyer  # 11/30 Gerd Kortemeyer
 # 6/1,8/17,8/18 Gerd Kortemeyer  # 6/1,8/17,8/18 Gerd Kortemeyer
   # 7/18 Jeremy Bowers
   
 package Apache::lonhomework;  package Apache::lonhomework;
 use strict;  use strict;
Line 41  use Apache::randomlabel(); Line 42  use Apache::randomlabel();
 use Apache::response();  use Apache::response();
 use Apache::hint();  use Apache::hint();
 use Apache::outputtags();  use Apache::outputtags();
   use Apache::caparesponse();
   use Apache::radiobuttonresponse();
   use Apache::optionresponse();
   use Apache::imageresponse();
   use Apache::essayresponse();
   use Apache::externalresponse();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use HTML::Entities();  use HTML::Entities();
   use Apache::loncommon();
 #use Time::HiRes qw( gettimeofday tv_interval );  #use Time::HiRes qw( gettimeofday tv_interval );
   
 BEGIN {  BEGIN {
Line 80  sub get_target { Line 88  sub get_target {
  }   }
       } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) {        } elsif ( $ENV{'form.problemmode'} eq 'Edit' ) {
  if ( $ENV{'form.submitted'} eq 'edit' ) {   if ( $ENV{'form.submitted'} eq 'edit' ) {
   return ('modified','edit');    if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
       return ('modified','web','answer');
     } else {
       return ('modified','edit');
     }
  } else {   } else {
   return ('edit');    return ('edit');
  }   }
Line 192  sub check_access { Line 204  sub check_access {
   
 sub showhash {  sub showhash {
   my (%hash) = @_;    my (%hash) = @_;
     &showhashsubset(\%hash,'');
     return '';
   }
   
   sub showhashsubset {
     my ($hash,$keyre) = @_;
   my $resultkey;    my $resultkey;
   foreach $resultkey (sort keys %hash) {    foreach $resultkey (sort keys %$hash) {
     if (ref($hash{$resultkey})) {      if ($resultkey =~ /$keyre/) {
       if ($hash{$resultkey} =~ /ARRAY/ ) {        if (ref($$hash{$resultkey})) {
  my $string="$resultkey ---- (";   if ($$hash{$resultkey} =~ /ARRAY/ ) {
  foreach my $elm (@{ $hash{$resultkey} }) {    my $string="$resultkey ---- (";
   $string.="$elm,";    foreach my $elm (@{ $$hash{$resultkey} }) {
       $string.="$elm,";
     }
     chop($string);
     &Apache::lonxml::debug("$string)");
    } else {
     &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
  }   }
  chop($string);  
  &Apache::lonxml::debug("$string)");  
       } else {        } else {
  &Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}");   &Apache::lonxml::debug("$resultkey ---- $$hash{$resultkey}");
       }        }
     } else {  
       &Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}");  
     }      }
   }    }
   &Apache::lonxml::debug("\n<br />restored values^</br>\n");    &Apache::lonxml::debug("\n<br />restored values^</br>\n");
Line 296  sub editxmlmode { Line 316  sub editxmlmode {
    \$ENV{'form.editxmltext'});     \$ENV{'form.editxmltext'});
     if (!$error) { $problem=&Apache::lonnet::getfile($file); }      if (!$error) { $problem=&Apache::lonnet::getfile($file); }
   }    }
   my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);    &Apache::lonhomework::showhashsubset(\%ENV,'^form');
   if ($cols > 80) { $cols = 80; }    if ( $ENV{'form.submit'} eq 'Submit Changes and View' ) {
   $result.='<html><body bgcolor="#FFFFFF">      &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::help_open_topic("Problem_Editor_XML_Index");
       if ($cols > 80) { $cols = 80; }
       $result.='<html><body bgcolor="#FFFFFF">
             <form name="lonhomework" method="POST" action="'.              <form name="lonhomework" method="POST" action="'.
       $ENV{'request.uri'}.'">        $ENV{'request.uri'}.'">
             <input type="hidden" name="problemmode" value="EditXML" />              <input type="hidden" name="problemmode" value="EditXML" />
             <input type="submit" name="problemmode" value="View" />              <input type="submit" name="problemmode" value="Discard Edits and View" />
             <input type="submit" name="problemmode" value="Edit" />              <input type="submit" name="problemmode" value="Edit" />
             <hr />              <hr />
             <input type="submit" name="submit" value="Submit Changes" />              <input type="submit" name="submit" value="Submit Changes" />
               <input type="submit" name="submit" value="Submit Changes and View" />
             <input type="submit" name="Undo" value="undo" />              <input type="submit" name="Undo" value="undo" />
             <hr />              <hr />
               ' . $xml_help . ' Problem Help<br>
             <textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'.              <textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'.
       &HTML::Entities::encode($problem).'</textarea>        &HTML::Entities::encode($problem).'</textarea>
             </form></body></html>';              </form></body></html>';
   $request->print($result);      $request->print($result);
     }
   return '';    return '';
 }  }
   
Line 334  sub renderpage { Line 364  sub renderpage {
     &Apache::edit::initialize_edit;      &Apache::edit::initialize_edit;
     if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); }      if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); }
     if ($target eq 'web') {      if ($target eq 'web') {
       if (&Apache::lonnet::symbread() eq '') {        my ($symb)=&Apache::lonxml::whichuser();
         if ($symb eq '') {
  if ($ENV{'request.state'} eq "construct") {   if ($ENV{'request.state'} eq "construct") {
  } else {   } else {
   $request->print("Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored<br />");    $request->print("Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored<br />");
Line 343  sub renderpage { Line 374  sub renderpage {
       #if ($Apache::lonhomework::viewgrades eq 'F') {&createmenu('grade',$request); }        #if ($Apache::lonhomework::viewgrades eq 'F') {&createmenu('grade',$request); }
     }      }
     #if ($target eq 'grade') { &showhash(%Apache::lonhomework::history); }      #if ($target eq 'grade') { &showhash(%Apache::lonhomework::history); }
       #if ($target eq 'web') { &showhash(%ENV); }
   
     my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm');      my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm');
     if ($default == -1) {      if ($default == -1) {
Line 350  sub renderpage { Line 382  sub renderpage {
       $default='';        $default='';
     }      }
     &Apache::lonxml::debug("Should be parsing now");      &Apache::lonxml::debug("Should be parsing now");
     $result = &Apache::lonxml::xmlparse($target, $problem,      $result = &Apache::lonxml::xmlparse($request, $target, $problem,
  $default.&setup_vars($target),%mystyle);   $default.&setup_vars($target),%mystyle);
   
     #$request->print("Result follows:");      #$request->print("Result follows:");
Line 470  sub handler { Line 502  sub handler {
   &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");    &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");
   # some times multiple problemmodes are submitted, need to select    # some times multiple problemmodes are submitted, need to select
   # the last one    # the last one
     &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
   if ( defined($ENV{'form.problemmode'}) &&    if ( defined($ENV{'form.problemmode'}) &&
        defined(@{ $ENV{'form.problemmode'} })) {         ref($ENV{'form.problemmode'}) ) {
       &Apache::lonxml::debug("Problem Mode ".join(",",@$ENV{'form.problemmode'}));
     my $mode=$ENV{'form.problemmode'}->[-1];      my $mode=$ENV{'form.problemmode'}->[-1];
     undef $ENV{'form.problemmode'};      undef $ENV{'form.problemmode'};
     $ENV{'form.problemmode'}=$mode;      $ENV{'form.problemmode'}=$mode;

Removed from v.1.75  
changed lines
  Added in v.1.83


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