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

version 1.317.4.3, 2011/01/06 22:38:11 version 1.317.4.4, 2011/10/06 12:32:52
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 'view') ||                  return ('grade','web','answer');
      ($env{'form.problemmode'} eq 'discard')) {              } elsif ($env{'form.problemmode'} eq 'saveview') {
  if ( defined($env{'form.submitted'}) &&                  return ('modified','web','answer');
      (!defined($env{'form.resetdata'})) &&              } elsif ($env{'form.problemmode'} eq 'discard') {
      (!defined($env{'form.newrandomization'}))) {                  return ('web','answer');
     return ('grade', 'web','answer');              } elsif (($env{'form.problemmode'} eq 'saveedit') ||
  } else {                       ($env{'form.problemmode'} eq 'undo')) {
     return ('web','answer');                  return ('modified','no_output_web','edit');
  }              } elsif ($env{'form.problemmode'} eq 'edit') {
     } elsif ($env{'form.problemmode'} eq 'edit') {                  return ('no_output_web','edit');
  if ( $env{'form.submitted'} eq 'edit' ) {              } else {
     if ( $env{'form.submitbutton'} eq &mt('Save and View') ) {                  return ('web');
  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 383  sub check_access { Line 386  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 638  sub setupheader { Line 641  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 665  sub handle_save_or_undo { Line 669  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 901  sub editxmlmode { Line 906  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(
             '<b> '              '<p class="LC_error">'
            .&mt('Unable to find [_1]',             .&mt('Unable to find [_1]',
                 '<span class="LC_filename">'.$file.'</span>')                  '<span class="LC_filename">'.$file.'</span>')
            .'</b>');             .'</p>');
   
  $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 929  sub editxmlmode { Line 936  sub editxmlmode {
             &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 $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 947  sub editxmlmode { Line 952  sub editxmlmode {
  '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 962  sub editxmlmode { Line 967  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 1023  sub renderpage { Line 1016  sub renderpage {
     $problem='';      $problem='';
     my $filename=(split('/',$file))[-1];      my $filename=(split('/',$file))[-1];
     my $error =      my $error =
  "<b> ".&mt('Unable to find [_1]',                  '<p class="LC_error">'
                   .&mt('Unable to find [_1]',
    '<span class="LC_filename">'.$filename.'</span>')     '<span class="LC_filename">'.$filename.'</span>')
  ."</b>";   ."</p>";
     $result.=      $result.=
  &Apache::loncommon::simple_error_page($request,'Not available',   &Apache::loncommon::simple_error_page($request,'Not available',
       $error);        $error);
Line 1257  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') ||
  &editxmlmode($request,$file);                       ($env{'form.problemmode'} eq 'saveeditxml') ||
                        ($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.3  
changed lines
  Added in v.1.317.4.4


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