Diff for /loncom/homework/lonhomework.pm between versions 1.299 and 1.310.4.1

version 1.299, 2008/11/19 18:34:56 version 1.310.4.1, 2010/08/20 03:48:29
Line 85  sub set_bubble_lines { Line 85  sub set_bubble_lines {
     }      }
 }  }
   
 =pod  #
   # Decides what targets to render for.
 =item get_target()  # Implicit inputs:
   #   Various session environment variables:
 Decides what targets to render for.  #      request.state -  published  - is a /res/ resource
 Implicit inputs:  #                       uploaded   - is a /uploaded/ resource
   Various session environment variables:  #                       contruct   - is a /priv/ resource
      request.state -  published  - is a /res/ resource  #      form.grade_target - a form parameter requesting a specific target
                       uploaded   - is a /uploaded/ resource  
                       contruct   - is a /priv/ resource  
      form.grade_target - a form parameter requesting a specific target  
   
 =cut  
   
 sub get_target {  sub get_target {
     &Apache::lonxml::debug("request.state = $env{'request.state'}");      &Apache::lonxml::debug("request.state = $env{'request.state'}");
     if( defined($env{'form.grade_target'})) {      if( defined($env{'form.grade_target'})) {
Line 117  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 179  sub setup_vars { Line 177  sub setup_vars {
 sub createmenu {  sub createmenu {
     my ($which,$request)=@_;      my ($which,$request)=@_;
     if ($which eq 'grade') {      if ($which eq 'grade') {
  $request->print('<script language="JavaScript">    $request->print('<script type="text/javascript" language="JavaScript"> 
           hwkmenu=window.open("/res/adm/pages/homeworkmenu.html","homeworkremote",            hwkmenu=window.open("/res/adm/pages/homeworkmenu.html","homeworkremote",
                  "height=350,width=150,menubar=no");                   "height=350,width=150,menubar=no");
           </script>');            </script>');
Line 303  sub check_slot_access { Line 301  sub check_slot_access {
  return ('WAITING_FOR_GRADE');   return ('WAITING_FOR_GRADE');
     }      }
   
     # no slot is currently open, and has been checked in for this version      # Previously used slot is no longer open, and has been checked in for this version.
     # previous slot is therefore CLOSED, so therefore the problem is      # However, the problem is not closed, and potentially, another slot might be
       # used to gain access to it to work on it, until the due date is reached, and the
       # problem then becomes CLOSED.  Therefore return the slotstatus - 
       # (which will be NOT_IN_SLOT).
     if (!defined($slot_name)      if (!defined($slot_name)
  && $checkedin    && $checkedin 
  && $type eq 'problem') {   && $type eq 'problem') {
  return ('CLOSED',$datemsg);          return ($slotstatus);
     }      }
   
     if ($slotstatus eq 'NOT_IN_A_SLOT'       if ($slotstatus eq 'NOT_IN_A_SLOT' 
Line 337  sub check_slot_access { Line 338  sub check_slot_access {
     return ($slotstatus,$datemsg,$slot_name,$returned_slot);      return ($slotstatus,$datemsg,$slot_name,$returned_slot);
 }  }
   
   # JB, 9/24/2002: Any changes in this function may require a change
 =pod  # in lonnavmaps::resource::getDateStatus.
   
 =item check_access()  
   
 JB, 9/24/2002: Any changes in this function may require a change  
 in lonnavmaps::resource::getDateStatus.  
   
 =cut  
   
 sub check_access {  sub check_access {
     my ($id) = @_;      my ($id) = @_;
     my $date ='';      my $date ='';
Line 494  sub check_access { Line 487  sub check_access {
   
     return ($status,$datemsg);      return ($status,$datemsg);
 }  }
   # this should work exactly like the copy in lonnavmaps.pm
   
 =pod   
   
 =item due_date()  
   
     this should work exactly like the copy in lonnavmaps.pm  
   
 =cut  
   
 sub due_date {  sub due_date {
     my ($part_id,$symb,$udom,$uname)=@_;      my ($part_id,$symb,$udom,$uname)=@_;
     my $date;      my $date;
Line 713  sub analyze_header { Line 697  sub analyze_header {
   
     $result .=       $result .= 
  &Apache::lonxml::message_location().'   &Apache::lonxml::message_location().'
             <form name="lonhomework" method="POST" action="'.              <form name="lonhomework" method="post" action="'.
     &HTML::Entities::encode($env{'request.uri'},'<>&"').'">'.      &HTML::Entities::encode($env{'request.uri'},'<>&"').'">'.
             '<input type="hidden" name="problemmode" value="'.              '<input type="hidden" name="problemmode" value="'.
             $env{'form.problemmode'}.'" />'.              $env{'form.problemmode'}.'" />'.
Line 800  sub analyze { Line 784  sub analyze {
     }      }
     &Apache::lonhtmlcommon::Update_PrgWin($request,\%prog_state,      &Apache::lonhtmlcommon::Update_PrgWin($request,\%prog_state,
   &mt('Analyzing Results'));    &mt('Analyzing Results'));
     $request->print('<hr class="LC_edit_problem_divide" />'.&mt('List of possible answers').': ');      $request->print('<hr class="LC_edit_problem_divide" />'
                      .'<h3>'
                      .&mt('List of possible answers')
                      .'</h3>'
       );
     foreach my $part (sort(keys(%allparts))) {      foreach my $part (sort(keys(%allparts))) {
  if (defined(@{ $overall{$part.'.answer'} })) {   if (defined(@{ $overall{$part.'.answer'} })) {
     for (my $i=0;$i<scalar(@{ $overall{$part.'.answer'} });$i++) {      for (my $i=0;$i<scalar(@{ $overall{$part.'.answer'} });$i++) {
  my $num_cols=scalar(@{ $overall{$part.'.answer'}[$i][0] });   my $num_cols=scalar(@{ $overall{$part.'.answer'}[$i][0] });
  $request->print('<table class="thinborder"><tr><th colspan="'.($num_cols+1).'">'.&mt('Part').' '.$part);                  $request->print(&Apache::loncommon::start_data_table()
                                  .&Apache::loncommon::start_data_table_header_row()
                                  .'<th colspan="'.($num_cols+1).'">'
                                  .&mt('Part').' '.$part
                   );
  if (scalar(@{ $overall{$part.'.answer'} }) > 1) {   if (scalar(@{ $overall{$part.'.answer'} }) > 1) {
     $request->print(&mt(' Answer [_1]',$i+1));      $request->print(' '.&mt('Answer [_1]',$i+1));
  }   }
  $request->print('</th></tr>');   $request->print('</th>'
                                  .&Apache::loncommon::end_data_table_header_row()
                   );
  my %frequency;   my %frequency;
  foreach my $answer (sort {$a->[0] <=> $b->[0]} (@{ $overall{$part.'.answer'}[$i] })) {   foreach my $answer (sort {$a->[0] <=> $b->[0]} (@{ $overall{$part.'.answer'}[$i] })) {
     $frequency{join("\0",@{ $answer })}++;      $frequency{join("\0",@{ $answer })}++;
  }   }
  $request->print('<tr><th colspan="'.($num_cols).'">'.&mt('Answer').'</th><th>'.&mt('Frequency').'<br />('                  $request->print(&Apache::loncommon::start_data_table_header_row()
  .&mt('click for example').')</th></tr>');                                 .'<th colspan="'.($num_cols).'">'.&mt('Answer').'</th>'
                                  .'<th>'.&mt('Frequency').'<br />'
                                  .'('.&mt('click for example').')</th>'
                                  .&Apache::loncommon::end_data_table_header_row()
                   );
  foreach my $answer (sort {(split("\0",$a))[0] <=> (split("\0",$b))[0]} (keys(%frequency))) {   foreach my $answer (sort {(split("\0",$a))[0] <=> (split("\0",$b))[0]} (keys(%frequency))) {
     $request->print('<tr><td class="center">'.                      $request->print(&Apache::loncommon::start_data_table_row()
     join('</td><td class="center">',split("\0",$answer)).                                     .'<td>'
     '</td><td class="center"><a href="'.$request->uri.'?rndseed='.$seedexample{join("\0",$part,$i,$answer)}.'">'.$frequency{$answer}.                                     .join('</td><td>',split("\0",$answer))
     '</a></td></tr>');     .'</td>'
                                      .'<td>'
                                      .'<a href="'.$request->uri.'?rndseed='.$seedexample{join("\0",$part,$i,$answer)}.'">'.$frequency{$answer}.'</a>'
      .'</td>'
                                      .&Apache::loncommon::end_data_table_row()
                       );
  }   }
  $request->print('</table>');                  $request->print(&Apache::loncommon::end_data_table());
     }      }
  } else {   } else {
     $request->print('<p>'.&mt('Response').' '.$part.' '.              $request->print('<p class="LC_warning">'
     &mt('is not analyzable at this time').'</p>');                             .&mt('Response [_1] is not analyzable at this time.',$part)
      .'</p>'
               );
  }   }
     }      }
     if (scalar(keys(%allparts)) == 0 ) {      if (scalar(keys(%allparts)) == 0 ) {
  $request->print('<p>'.&mt('Found no analyzable responses in this problem, currently only Numerical, Formula and String response styles are supported.').'</p>');          $request->print('<p class="LC_warning">'
                          .&mt('Found no analyzable responses in this problem.'
                              .' Currently only Numerical, Formula and String response styles are supported.')
                          .'</p>'
           );
     }      }
     &Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state);      &Apache::lonhtmlcommon::Close_PrgWin($request,\%prog_state);
     &analyze_footer($request);      &analyze_footer($request);
Line 878  sub editxmlmode { Line 887  sub editxmlmode {
     my $result;      my $result;
     my $problem=&Apache::lonnet::getfile($file);      my $problem=&Apache::lonnet::getfile($file);
     if ($problem eq -1) {      if ($problem eq -1) {
  &Apache::lonxml::error("<b> ".&mt('Unable to find').   &Apache::lonxml::error(
        " <i>$file</i></b>");              '<b> '
              .&mt('Unable to find [_1]',
                   '<span class="LC_filename">'.$file.'</span>')
              .'</b>');
   
  $problem='';   $problem='';
     }      }
     if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) {      if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) {
Line 894  sub editxmlmode { Line 907  sub editxmlmode {
  &renderpage($request,$file);   &renderpage($request,$file);
     } else {      } else {
  my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);   my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);
  my $xml_help = '<table><tr><td>'.  
     &Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index",  
     "Problem Editing Help").  
     '</td><td>'.  
        &Apache::loncommon::help_open_menu(undef,undef,5,'Authoring').  
                 '</td></tr></table>';  
  if ($cols > 80) { $cols = 80; }   if ($cols > 80) { $cols = 80; }
  if ($cols < 70) { $cols = 70; }   if ($cols < 70) { $cols = 70; }
  if ($rows < 20) { $rows = 20; }   if ($rows < 20) { $rows = 20; }
Line 921  sub editxmlmode { Line 928  sub editxmlmode {
     }});      }});
  $result.=$start_page.   $result.=$start_page.
     &renderpage($request,$file,['no_output_web'],1).      &renderpage($request,$file,['no_output_web'],1).
             '<form '.&Apache::edit::form_change_detection().' name="lonhomework" method="POST" action="'.              '<form '.&Apache::edit::form_change_detection().' name="lonhomework" method="post" action="'.
     &HTML::Entities::encode($env{'request.uri'},'<>&"').'">'.      &HTML::Entities::encode($env{'request.uri'},'<>&"').'">'.
     &Apache::structuretags::remember_problem_state().'      &Apache::structuretags::remember_problem_state().'
             <div class="LC_edit_problem_editxml_header">              <div class="LC_edit_problem_editxml_header">
               <table class="LC_edit_problem_header_title"><tr><td>                <table class="LC_edit_problem_header_title"><tr><td>
                '.&mt('Problem Editing').&Apache::loncommon::help_open_topic('Problem_Editor_XML_Index').'                 '.&mt('Problem Editing').&Apache::loncommon::help_open_topic('Problem_Editor_XML_Index').'
                 </td><td align="right">                  </td><td align="right">
                   '.&Apache::loncommon::helpLatexCheatsheet().'                    '.&Apache::loncommon::helpLatexCheatsheet('Problem_LON-CAPA_Functions','Script Functions').'
                 </td></tr>                  </td></tr>
               </table>                </table>
               <div class="LC_edit_problem_discards">                <div class="LC_edit_problem_discards">
Line 961  sub editxmlmode { Line 968  sub editxmlmode {
     return '';      return '';
 }  }
   
 =pod  #
   #    Render the page in whatever target desired.
 =item renderpage()  #
   
     Render the page in whatever target desired.  
   
 =cut  
   
 sub renderpage {  sub renderpage {
     my ($request,$file,$targets,$return_string) = @_;      my ($request,$file,$targets,$return_string) = @_;
   
Line 997  sub renderpage { Line 999  sub renderpage {
     my $filename=(split('/',$file))[-1];      my $filename=(split('/',$file))[-1];
     my $error =      my $error =
  "<b> ".&mt('Unable to find [_1]',   "<b> ".&mt('Unable to find [_1]',
    ' <span class="LC_filename">'.$filename.'</span>')     '<span class="LC_filename">'.$filename.'</span>')
  ."</b>";   ."</b>";
     $result.=      $result.=
  &Apache::loncommon::simple_error_page($request,'Not available',   &Apache::loncommon::simple_error_page($request,'Not available',
Line 1143  $start_page Line 1145  $start_page
 <h1>".&mt("Creating a new $extension resource.")."</h1>  <h1>".&mt("Creating a new $extension resource.")."</h1>
 $errormsg  $errormsg
 ".&mt("The requested file [_1] currently does not exist.",  ".&mt("The requested file [_1] currently does not exist.",
       "<tt>$shownurl</tt>")."        '<span class="LC_filename">'.$shownurl.'</span>')."
 <p>  <p>
 <b>  <b>
 ".&mt("To create a new $extension, select a template from the".  ".&mt("To create a new $extension, select a template from the".
       " list below. Then click on the \"Create $extension\" button.")."</b>        " list below. Then click on the \"Create $extension\" button.").'</b>
 </p><form action=\"$url\" method=\"POST\">");  </p><form action="'.$url.'" method="post">');
   
  if (defined($templatelist)) {   if (defined($templatelist)) {
     $request->print($templatelist);      $request->print($templatelist);
Line 1168  sub update_construct_style { Line 1170  sub update_construct_style {
  && !defined($env{'form.newrandomization'})) {   && !defined($env{'form.newrandomization'})) {
  if ((!$env{'form.style_file'} && $env{'construct.style'})   if ((!$env{'form.style_file'} && $env{'construct.style'})
     ||$env{'form.clear_style_file'}) {      ||$env{'form.clear_style_file'}) {
     &Apache::lonnet::delenv('construct\\.style');      &Apache::lonnet::delenv('construct.style');
  } elsif ($env{'form.style_file'}    } elsif ($env{'form.style_file'} 
     && $env{'construct.style'} ne $env{'form.style_file'}) {      && $env{'construct.style'} ne $env{'form.style_file'}) {
     &Apache::lonnet::appenv({'construct.style' =>       &Apache::lonnet::appenv({'construct.style' => 

Removed from v.1.299  
changed lines
  Added in v.1.310.4.1


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