Diff for /loncom/homework/lonhomework.pm between versions 1.322 and 1.323

version 1.322, 2010/11/01 16:19:49 version 1.323, 2011/02/06 18:43:10
Line 129  sub get_target { Line 129  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') {
  #$env{'form.webgrade'} = 'yes';  
  return ('grade','webgrade','answer');   return ('grade','webgrade','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') {  
  if ( $env{'form.submitted'} eq 'edit' ) {  
     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 {      } else {
  return ('web');   return ('web');
     }      }
  }          }
   #
   # End of Construction Space
   #
     }      }
   #
   # Huh? We are nowhere, so do nothing.
   #
     return ();      return ();
 }  }
   
Line 628  sub setupheader { Line 629  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.Undo'} eq &mt('undo')) {      if (($env{'form.problemmode'} eq 'undo') || ($env{'form.problemmode'} eq 'undoxml')) {
  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 655  sub handle_save_or_undo { Line 657  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 898  sub editxmlmode { Line 901  sub editxmlmode {
   
  $problem='';   $problem='';
     }      }
     if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) {  
       if (($env{'form.problemmode'} eq 'saveeditxml') ||
           ($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.submitbutton'} eq &mt('Save and View') ) {      if ($env{'form.problemmode'} eq 'saveviewxml') {
  &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 918  sub editxmlmode { Line 924  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 $dragmath_button =   
             &Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1);  
   
     # Breadcrumbs      # Breadcrumbs
     my $brcrum = [{'href' => &Apache::loncommon::authorspace(),      my $brcrum = [{'href' => &Apache::loncommon::authorspace(),
Line 934  sub editxmlmode { Line 938  sub editxmlmode {
     '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 951  sub editxmlmode { Line 955  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">  
                 <input type="hidden" name="problemmode" value="editxml" />           $result.='<input type="hidden" name="problemmode" value="saveedit" />'.
                     &Apache::structuretags::problem_edit_buttons('editxml');
                 <input type="button" name="submitmode" accesskey="d" value="'.&mt('Discard Edits and View').'" '.           
                 'onclick="javascript:setmode(this.form,'."'discard'".')" />           $result.='<hr style="clear:both;" />'.&Apache::lonxml::message_location().'</div>'.  
                 <input type="button" '.&Apache::edit::submit_ask_anyway('setmode(this.form,'."'edit'".')').'name="submitmode" accesskey="e" value="'.&mt('Edit').'" />                    '<textarea '.&Apache::edit::element_change_detection().
                 <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 1246  sub handler { Line 1238  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') ||
                        ($env{'form.problemmode'} eq 'saveviewxml') ||
                        ($env{'form.problemmode'} eq 'undoxml')) {
  &editxmlmode($request,$file);   &editxmlmode($request,$file);
     } elsif ($env{'form.problemmode'} eq 'calcanswers') {      } elsif ($env{'form.problemmode'} eq 'calcanswers') {
  &analyze($request,$file);   &analyze($request,$file);

Removed from v.1.322  
changed lines
  Added in v.1.323


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