Diff for /loncom/homework/lonhomework.pm between versions 1.317.4.4 and 1.318

version 1.317.4.4, 2011/10/06 12:32:52 version 1.318, 2010/03/10 21:25:36
Line 47  use Apache::externalresponse(); Line 47  use Apache::externalresponse();
 use Apache::rankresponse();  use Apache::rankresponse();
 use Apache::matchresponse();  use Apache::matchresponse();
 use Apache::chemresponse();  use Apache::chemresponse();
 use Apache::functionplotresponse();  
 use Apache::drawimage();  use Apache::drawimage();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
Line 112  sub get_target { Line 111  sub get_target {
  } elsif ( $env{'form.grade_target'} eq 'webgrade'   } elsif ( $env{'form.grade_target'} eq 'webgrade'
   && ($Apache::lonhomework::queuegrade eq 'F' )) {    && ($Apache::lonhomework::queuegrade eq 'F' )) {
     return ($env{'form.grade_target'});      return ($env{'form.grade_target'});
         } elsif ($env{'form.grade_target'} eq 'answer') {   }
             if ($env{'form.answer_output_mode'} eq 'tex') {  
                 return ($env{'form.grade_target'});  
             }  
         }  
  if ($env{'form.webgrade'} &&   if ($env{'form.webgrade'} &&
     ($Apache::lonhomework::modifygrades eq 'F'      ($Apache::lonhomework::modifygrades eq 'F'
      || $Apache::lonhomework::queuegrade eq 'F' )) {       || $Apache::lonhomework::queuegrade eq 'F' )) {
Line 129  sub get_target { Line 124  sub get_target {
     return ('web');      return ('web');
  }   }
     } elsif ($env{'request.state'} eq "construct") {      } elsif ($env{'request.state'} eq "construct") {
 #  
 # We are in construction space, editing and testing problems  
 #  
  if ( defined($env{'form.grade_target'}) ) {   if ( defined($env{'form.grade_target'}) ) {
     return ($env{'form.grade_target'});      return ($env{'form.grade_target'});
  }   }
  if ( defined($env{'form.preview'})) {   if ( defined($env{'form.preview'})) {
     if ( defined($env{'form.submitted'})) {      if ( defined($env{'form.submitted'})) {
 #  
 # We are doing a problem preview  
 #  
  return ('grade', 'web');   return ('grade', 'web');
     } else {      } else {
  return ('web');   return ('web');
     }      }
  } else {   } else {
     if ($env{'form.problemstate'} eq 'WEB_GRADE') {      if ($env{'form.problemstate'} eq 'WEB_GRADE') {
                 return ('grade','webgrade','answer');   #$env{'form.webgrade'} = 'yes';
             } elsif ($env{'form.problemmode'} eq 'view') {   return ('grade','webgrade','answer');
                 return ('grade','web','answer');      } elsif (($env{'form.problemmode'} eq 'view') ||
             } elsif ($env{'form.problemmode'} eq 'saveview') {       ($env{'form.problemmode'} eq 'discard')) {
                 return ('modified','web','answer');   if ( defined($env{'form.submitted'}) &&
             } elsif ($env{'form.problemmode'} eq 'discard') {       (!defined($env{'form.resetdata'})) &&
                 return ('web','answer');       (!defined($env{'form.newrandomization'}))) {
             } elsif (($env{'form.problemmode'} eq 'saveedit') ||      return ('grade', 'web','answer');
                      ($env{'form.problemmode'} eq 'undo')) {   } else {
                 return ('modified','no_output_web','edit');      return ('web','answer');
             } elsif ($env{'form.problemmode'} eq 'edit') {   }
                 return ('no_output_web','edit');      } elsif ($env{'form.problemmode'} eq 'edit') {
             } else {   if ( $env{'form.submitted'} eq 'edit' ) {
                 return ('web');      if ( $env{'form.submitbutton'} eq &mt('Save and View') ) {
             }   return ('modified','web','answer');
       } else {
    return ('modified','no_output_web','edit');
       }
    } else {
       return ('no_output_web','edit');
    }
       } else {
    return ('web');
       }
  }   }
 #  
 # End of Construction Space  
 #  
     }      }
 #  
 # Huh? We are nowhere, so do nothing.  
 #  
     return ();      return ();
 }  }
   
Line 273  sub check_slot_access { Line 265  sub check_slot_access {
     }      }
     if ($slotstatus eq 'NEEDS_CHECKIN' &&      if ($slotstatus eq 'NEEDS_CHECKIN' &&
  &proctor_checked_in($slot_name,$returned_slot,$type)) {   &proctor_checked_in($slot_name,$returned_slot,$type)) {
  &Apache::lonxml::debug("proctor checked in");   &Apache::lonxml::debug("protoctor checked in");
  $slotstatus=$status;   $slotstatus='CAN_ANSWER';
     }      }
   
     my ($is_correct,$got_grade,$checkedin);      my ($is_correct,$got_grade,$checkedin);
Line 386  sub check_access { Line 378  sub check_access {
     $date=&mt("can not be accessed from your location.");      $date=&mt("can not be accessed from your location.");
     return($status,$date);      return($status,$date);
  }   }
   
  foreach my $temp ("opendate","duedate","answerdate") {   foreach my $temp ("opendate","duedate","answerdate") {
     $lastdate = $date;      $lastdate = $date;
     if ($temp eq 'duedate') {      if ($temp eq 'duedate') {
Line 641  sub setupheader { Line 633  sub setupheader {
   
 sub handle_save_or_undo {  sub handle_save_or_undo {
     my ($request,$problem,$result) = @_;      my ($request,$problem,$result) = @_;
   
     my $file    = &Apache::lonnet::filelocation("",$request->uri);      my $file    = &Apache::lonnet::filelocation("",$request->uri);
     my $filebak =$file.".bak";      my $filebak =$file.".bak";
     my $filetmp =$file.".tmp";      my $filetmp =$file.".tmp";
     my $error=0;      my $error=0;
     if (($env{'form.problemmode'} eq 'undo') || ($env{'form.problemmode'} eq 'undoxml')) {      if ($env{'form.Undo'} eq &mt('undo')) {
  my $error=0;   my $error=0;
  if (!&File::Copy::copy($file,$filetmp)) { $error=1; }   if (!&File::Copy::copy($file,$filetmp)) { $error=1; }
  if ((!$error) && (!&File::Copy::copy($filebak,$file))) { $error=1; }   if ((!$error) && (!&File::Copy::copy($filebak,$file))) { $error=1; }
Line 669  sub handle_save_or_undo { Line 660  sub handle_save_or_undo {
  }   }
     } else {      } else {
         &Apache::lonnet::correct_line_ends($result);          &Apache::lonnet::correct_line_ends($result);
   
  my $fs=Apache::File->new(">$filebak");   my $fs=Apache::File->new(">$filebak");
  if (defined($fs)) {   if (defined($fs)) {
     print $fs $$problem;      print $fs $$problem;
Line 906  sub editxmlmode { Line 896  sub editxmlmode {
     my $problem=&Apache::lonnet::getfile($file);      my $problem=&Apache::lonnet::getfile($file);
     if ($problem eq -1) {      if ($problem eq -1) {
  &Apache::lonxml::error(   &Apache::lonxml::error(
             '<p class="LC_error">'              '<b> '
            .&mt('Unable to find [_1]',             .&mt('Unable to find [_1]',
                 '<span class="LC_filename">'.$file.'</span>')                  '<span class="LC_filename">'.$file.'</span>')
            .'</p>');             .'</b>');
   
  $problem='';   $problem='';
     }      }
     if (($env{'form.problemmode'} eq 'saveeditxml') ||      if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) {
         ($env{'form.problemmode'} eq 'saveviewxml') ||  
         ($env{'form.problemmode'} eq 'undoxml')) {  
  my $error=&handle_save_or_undo($request,\$problem,   my $error=&handle_save_or_undo($request,\$problem,
        \$env{'form.editxmltext'});         \$env{'form.editxmltext'});
  if (!$error) { $problem=&Apache::lonnet::getfile($file); }   if (!$error) { $problem=&Apache::lonnet::getfile($file); }
     }      }
     &Apache::lonhomework::showhashsubset(\%env,'^form');      &Apache::lonhomework::showhashsubset(\%env,'^form');
     if ($env{'form.problemmode'} eq 'saveviewxml') {      if ( $env{'form.submitbutton'} eq &mt('Save and View') ) {
  &Apache::lonhomework::showhashsubset(\%env,'^form');   &Apache::lonhomework::showhashsubset(\%env,'^form');
  $env{'form.problemmode'}='view';   $env{'form.problemmode'}='view';
  &renderpage($request,$file);   &renderpage($request,$file);
Line 935  sub editxmlmode { Line 923  sub editxmlmode {
     &Apache::loncommon::resize_textarea_js().      &Apache::loncommon::resize_textarea_js().
             &Apache::structuretags::setmode_javascript().              &Apache::structuretags::setmode_javascript().
             &Apache::lonhtmlcommon::dragmath_js("EditMathPopup");              &Apache::lonhtmlcommon::dragmath_js("EditMathPopup");
  my $only_body =  ($env{'environment.remote'} eq 'off')? 0 : 1;   my $dragmath_button = 
               &Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1);
   
     # Breadcrumbs      # Breadcrumbs
     my $brcrum = [{'href' => &Apache::loncommon::authorspace(),      my $brcrum = [{'href' => &Apache::loncommon::authorspace(),
Line 946  sub editxmlmode { Line 935  sub editxmlmode {
  my $start_page =    my $start_page = 
     &Apache::loncommon::start_page(&mt("EditXML [_1]",$file),$js,      &Apache::loncommon::start_page(&mt("EditXML [_1]",$file),$js,
    {'no_auto_mt_title' => 1,     {'no_auto_mt_title' => 1,
     'only_body'        => $only_body,      'only_body'        => 0,
     'add_entries'      => {      'add_entries'      => {
  'onresize' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')],   'onresize' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')],
  'onload'   => q[resize_textarea('LC_editxmltext','LC_aftertextarea')],   'onload'   => q[resize_textarea('LC_editxmltext','LC_aftertextarea')],
                                     },                                      },
                                                 'bread_crumbs' => $brcrum,                                                  'bread_crumbs' => $brcrum,
                                            });  });
   
     $result=$start_page      $result=$start_page
            .&Apache::loncommon::head_subbox(             .&Apache::loncommon::head_subbox(
Line 967  sub editxmlmode { Line 956  sub editxmlmode {
                 </td><td align="right">                  </td><td align="right">
                   '.&Apache::loncommon::helpLatexCheatsheet('Problem_LON-CAPA_Functions','Script Functions').'                    '.&Apache::loncommon::helpLatexCheatsheet('Problem_LON-CAPA_Functions','Script Functions').'
                 </td></tr>                  </td></tr>
               </table>';                </table>
                 <div class="LC_edit_problem_discards">
          $result.='<input type="hidden" name="problemmode" value="saveedit" />'.                  <input type="hidden" name="problemmode" value="editxml" />
                   &Apache::structuretags::problem_edit_buttons('editxml');  
                   <input type="button" name="submitmode" accesskey="d" value="'.&mt('Discard Edits and View').'" '.
          $result.='<hr style="clear:both;" />'.&Apache::lonxml::message_location().'</div>'.                  'onclick="javascript:setmode(this.form,'."'discard'".')" />
                   '<textarea '.&Apache::edit::element_change_detection().                  <input type="button" '.&Apache::edit::submit_ask_anyway('setmode(this.form,'."'edit'".')').'name="submitmode" accesskey="e" value="'.&mt('Edit').'" />
                   <input type="submit" name="Undo" accesskey="u" value="'.&mt('undo').'" />
                   '.$dragmath_button.'
                 </div>
                 <div class="LC_edit_problem_saves">
                   <input type="submit" name="submitbutton" accesskey="s" value="'.&mt('Save').'"  />
                   <input type="submit" name="submitbutton" accesskey="v" value="'.&mt('Save and View').'" />
                 </div>
                 <hr style="clear:both;" />
         '.&Apache::lonxml::message_location().'
               </div>
               '  . '
               <textarea '.&Apache::edit::element_change_detection().
               ' rows="'.$rows.'" cols="'.$cols.'" style="width:100%" '.                ' rows="'.$rows.'" cols="'.$cols.'" style="width:100%" '.
       ' name="editxmltext" id="LC_editxmltext">'.        ' name="editxmltext" id="LC_editxmltext">'.
       &HTML::Entities::encode($problem,'<>&"').'</textarea>        &HTML::Entities::encode($problem,'<>&"').'</textarea>
Line 1016  sub renderpage { Line 1017  sub renderpage {
     $problem='';      $problem='';
     my $filename=(split('/',$file))[-1];      my $filename=(split('/',$file))[-1];
     my $error =      my $error =
                 '<p class="LC_error">'   "<b> ".&mt('Unable to find [_1]',
                 .&mt('Unable to find [_1]',  
    '<span class="LC_filename">'.$filename.'</span>')     '<span class="LC_filename">'.$filename.'</span>')
  ."</p>";   ."</b>";
     $result.=      $result.=
  &Apache::loncommon::simple_error_page($request,'Not available',   &Apache::loncommon::simple_error_page($request,'Not available',
       $error);        $error);
Line 1251  sub handler { Line 1251  sub handler {
  #first visit to problem in construction space   #first visit to problem in construction space
  $env{'form.problemmode'}= 'view';   $env{'form.problemmode'}= 'view';
  &renderpage($request,$file);   &renderpage($request,$file);
             } elsif (($env{'form.problemmode'} eq 'editxml') ||      } elsif ($env{'form.problemmode'} eq 'editxml') {
                      ($env{'form.problemmode'} eq 'saveeditxml') ||   &editxmlmode($request,$file);
                      ($env{'form.problemmode'} eq 'saveviewxml') ||  
                      ($env{'form.problemmode'} eq 'undoxml')) {  
                 &editxmlmode($request,$file);  
     } elsif ($env{'form.problemmode'} eq 'calcanswers') {      } elsif ($env{'form.problemmode'} eq 'calcanswers') {
  &analyze($request,$file);   &analyze($request,$file);
     } else {      } else {

Removed from v.1.317.4.4  
changed lines
  Added in v.1.318


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