Diff for /loncom/homework/bridgetask.pm between versions 1.236 and 1.243

version 1.236, 2007/08/03 23:29:57 version 1.243, 2008/12/05 10:23:50
Line 244  sub add_grading_button { Line 244  sub add_grading_button {
     my $result="\n\t".'<input type="submit" name="gradeasubmission" value="'.      my $result="\n\t".'<input type="submit" name="gradeasubmission" value="'.
  &mt("Get a submission to grade").'" />';   &mt("Get a submission to grade").'" />';
     $result.="\n\t".'<input type="hidden" name="grade_target" value="webgrade" />';      $result.="\n\t".'<input type="hidden" name="grade_target" value="webgrade" />';
     if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})      my $see_all = &Apache::lonnet::allowed('mgq',$env{'request.course.id'});
  || &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})      my $see_sec = &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.
  ) {     '/'.$env{'request.course.sec'});
   
       if ($see_all || $see_sec) {
  my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue');   my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue');
  $result.="\n\t".'<table>'."\n\t\t".'<tr>';   $result.="\n\t".'<table>'."\n\t\t".'<tr>';
  $result.="\n\t\t\t".'<td rowspan="4">Specify a section: </td>'.   if ($see_all || (!&section_restricted())) {
     "\n\t\t\t".'<td rowspan="4">'.$sec_select."\n\t\t\t".'</td>';      $result.="\n\t\t\t".'<td rowspan="4">'.&mt('Specify a section:').' </td>'.
    "\n\t\t\t".'<td rowspan="4">'.$sec_select."\n\t\t\t".'</td>';
    } else {
       $result.="\n\t\t\t".'<td rowspan="4">'.&mt('Grading section:').' </td>'.
    "\n\t\t\t".'<td rowspan="4">'.$env{'request.course.sec'}."\n\t\t\t".'</td>';
    }
  $result.="\n\t\t\t".'<td>'.'<input type="submit" name="reviewagrading" value="'.   $result.="\n\t\t\t".'<td>'.'<input type="submit" name="reviewagrading" value="'.
     &mt("Select an entry from the grading queue:").'" /> ';      &mt("Select an entry from the grading queue:").'" /> ';
   
Line 287  sub add_grading_button { Line 294  sub add_grading_button {
   
 sub add_request_another_attempt_button {  sub add_request_another_attempt_button {
     my ($text)=@_;      my ($text)=@_;
     if (!$text) { $text="Request another attempt"; }      if (!$text) { $text=&mt('Request another attempt'); }
     my $result;      my $result;
     my $symb=&Apache::lonnet::symbread();      my $symb=&Apache::lonnet::symbread();
     # not a slot access based resource      # not a slot access based resource
Line 299  sub add_request_another_attempt_button { Line 306  sub add_request_another_attempt_button {
     my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb);      my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb);
     my $action='get_reservation';      my $action='get_reservation';
     if ($slot_name) {      if ($slot_name) {
  $text="Change reservation.";   $text=&mt('Change reservation.');
  $action='change_reservation';   $action='change_reservation';
  my $description=&Apache::slotrequest::get_description($slot_name,   my $description=&Apache::slotrequest::get_description($slot_name,
       $slot);        $slot);
  $result.=(<<STUFF);   $result.='<p>'
     <p> Will be next available: $description </p>                  .&mt('Will be next available:')
 STUFF                  .' '.$description
                   .'</p>';
     }      }
           
     if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); }      if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); }
Line 315  STUFF Line 323  STUFF
  '<input type="hidden" name="symb" value="'.$symb.'" />'."\n\t\t".   '<input type="hidden" name="symb" value="'.$symb.'" />'."\n\t\t".
  '<input type="hidden" name="command" value="'.$action.'" />'."\n\t\t".   '<input type="hidden" name="command" value="'.$action.'" />'."\n\t\t".
  '<input type="submit" name="requestattempt" value="'.   '<input type="submit" name="requestattempt" value="'.
  &mt($text).'" />'."\n\t".   $text.'" />'."\n\t".
  '</form>'."\n";   '</form>'."\n";
     return $result;      return $result;
 }  }
Line 465  sub file_list { Line 473  sub file_list {
  my $file=$file_url.$partial_file;   my $file=$file_url.$partial_file;
  $file=~s|/+|/|g;   $file=~s|/+|/|g;
  &Apache::lonnet::allowuploaded('/adm/bridgetask',$file);   &Apache::lonnet::allowuploaded('/adm/bridgetask',$file);
  $file_list.='<li><span style="white-space: nowrap;"><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.   $file_list.='<li><span class="LC_nobreak"><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.
     &Apache::loncommon::icon($file).'" alt="file icon" border="0" /> '.$file.      &Apache::loncommon::icon($file).'" alt="file icon" border="0" /> '.$file.
     '</a></span></li>'."\n";      '</a></span></li>'."\n";
     }      }
Line 533  sub done_screen { Line 541  sub done_screen {
     foreach my $file (@files) {      foreach my $file (@files) {
  my $url="/uploaded/$domain/$user/portfolio$file";   my $url="/uploaded/$domain/$user/portfolio$file";
  if (! &Apache::lonnet::stat_file($url)) {   if (! &Apache::lonnet::stat_file($url)) {
     $file = &mt('<span class="LC_error"> Nonexistent file:</span> '.      $file = '<span class="LC_error">'
  '<span class="LC_filename">[_1]</span>',$file);                     .&mt('[_1]Nonexistent file:[_2]'
     $msg .= "<p>Submitted non-existant file $file</p>\n";                         ,'<span class="LC_error"> '
                          ,'</span> <span class="LC_filename">'.$file.'</span>');
       $msg .= "<p>".&mt('Submitted non-existent file [_1]',$file)."</p>\n";
  } else {   } else {
     $file = '<span class="LC_filename">'.$file.'</span>';      $file = '<span class="LC_filename">'.$file.'</span>';
     $msg .= "<p>Submitted file $file</p>\n";      $msg .= "<p>".&mt('Submitted file [_1]',$file)."</p>\n";
  }   }
  $files .= '<li>'.$file.'</li>';   $files .= '<li>'.$file.'</li>';
     }      }
     $files.='</ul>';      $files.='</ul>';
     my $subject = "Submission message for $title";      my $subject = &mt('Submission message for [_1]',$title);
     my ($message_status,$comment_status);      my ($message_status,$comment_status);
     my $setting = $env{'course.'.$env{'request.course.id'}.'.task_messages'};      my $setting = $env{'course.'.$env{'request.course.id'}.'.task_messages'};
     $setting =~ s/^\s*(\S*)\s*$/$1/;      $setting =~ s/^\s*(\S*)\s*$/$1/;
Line 562  sub done_screen { Line 572  sub done_screen {
  $comment_status = '<p>'.&mt('Message sent to instructor: [_1]',   $comment_status = '<p>'.&mt('Message sent to instructor: [_1]',
     $comment_status).' </p>';      $comment_status).' </p>';
     }      }
     return <<DONESCREEN;      return "<h2>$title</h2>"
 <h2>$title</h2>            .'<p>'.&mt('Files submitted: [_1]',$files).'</p>'
 <p> Files submitted: $files </p>            .'<p>'.&mt('You are now done with this Bridge Task').'</p>'
 <p> You are now done with this Bridge Task </p>            .'<hr />'
 <hr />            .'<p><a href="/adm/logout">'.&mt('Logout').'</a></p>'
 <p> <a href="/adm/logout">Logout</a> </p>  .'<p><a href="/adm/roles">'.&mt('Change to a different course').'</a></p>'
 <p> <a href="/adm/roles">Change to a different course</a> </p>  .$message_status
 $message_status  .$comment_status;
 $comment_status  
 DONESCREEN  
   
 }  }
   
Line 623  sub start_Task { Line 631  sub start_Task {
  my $target_id =    my $target_id = 
     &Apache::lonstathelpers::make_target_id({symb => $symb,      &Apache::lonstathelpers::make_target_id({symb => $symb,
      part => '0'});       part => '0'});
  $result.='<form method="post" name="gradingstatus" action="/adm/statistics">'.   if (!&section_restricted()) {
     '<input type="hidden" name="problemchoice" value="'.$target_id.'" />'.      $result.='<form method="post" name="gradingstatus" action="/adm/statistics">'.
     '<input type="hidden" name="reportSelected" value="grading_analysis" />'.   '<input type="hidden" name="problemchoice" value="'.$target_id.'" />'.
     '<input type="submit" name="grading" value="'.   '<input type="hidden" name="reportSelected" value="grading_analysis" />'.
     &mt('Show Grading Status').'" />'.   '<input type="submit" name="grading" value="'.
     '</form>';   &mt('Show Grading Status').'" />'.
    '</form>';
    }
     }      }
  }   }
     }      }
Line 807  sub start_Task { Line 817  sub start_Task {
  $result.='<input type="hidden" name="regrade" value="'.   $result.='<input type="hidden" name="regrade" value="'.
     $env{'form.regrade'}.'" />';      $env{'form.regrade'}.'" />';
     }      }
     if ($env{'form.chosensections'}) {      if ($env{'form.chosensections'} || &section_restricted()) {
  my @chosen_sections=   my @chosen_sections = &get_allowed_sections();
     &Apache::loncommon::get_env_multiple('form.chosensections');  
  foreach my $sec (@chosen_sections) {   foreach my $sec (@chosen_sections) {
     $result.='<input type="hidden" name="chosensections"       $result.='<input type="hidden" name="chosensections" 
                                value="'.$sec.'" />';                                 value="'.$sec.'" />';
Line 905  sub get_key_todo { Line 914  sub get_key_todo {
  my $cdom  = $env{'course.'.$cid.'.domain'};   my $cdom  = $env{'course.'.$cid.'.domain'};
  my $uname = &LONCAPA::clean_username($env{'form.gradinguser'});   my $uname = &LONCAPA::clean_username($env{'form.gradinguser'});
  my $udom  = &LONCAPA::clean_domain($env{'form.gradingdomain'});   my $udom  = &LONCAPA::clean_domain($env{'form.gradingdomain'});
   
    if (&section_restricted()) {
       my $classlist=&get_limited_classlist();
       if (!&allow_grade_user($classlist->{$uname.':'.$udom})) {
    return (undef,'not_allowed',
    &mt('Requested student ([_1]) is in a section you aren\'t allowed to grade.',$uname.':'.$udom));
       }
    }
  my $gradingkey=&encode_queue_key($symb,$udom,$uname);   my $gradingkey=&encode_queue_key($symb,$udom,$uname);
   
  my $queue;   my $queue;
Line 1075  sub end_Task { Line 1091  sub end_Task {
  if (!$previous && $status ne 'SHOW_ANSWER' &&   if (!$previous && $status ne 'SHOW_ANSWER' &&
     &show_task($status,$previous)) {      &show_task($status,$previous)) {
     my $action = &Apache::lonenc::check_encrypt($env{'request.uri'});      my $action = &Apache::lonenc::check_encrypt($env{'request.uri'});
                       my $donetext = &mt('Done');
     $result.=<<DONEBUTTON;      $result.=<<DONEBUTTON;
 <form name="done" method="post" action="$action">  <form name="done" method="post" action="$action">
    <input type="hidden" name="donescreen" value="1" />     <input type="hidden" name="donescreen" value="1" />
    <input type="submit" value="Done" />     <input type="submit" value="$donetext" />
 </form>  </form>
 DONEBUTTON  DONEBUTTON
                 }                  }
Line 1111  DONEBUTTON Line 1128  DONEBUTTON
  "</p>\n";   "</p>\n";
   
     if ($bt_status eq 'pass')  {      if ($bt_status eq 'pass')  {
  $status.='<h2>You passed the '.$title.' given on '.   $status.='<h2>'
     $start_time.'</h2>';                                  .&mt('You passed the [_1] given on [_2].',$title,$start_time)
                                   .'</h2>';
  $status.=$question_status;   $status.=$question_status;
     }      }
     if ($bt_status eq 'fail')  {      if ($bt_status eq 'fail')  {
  $status.='<h2>You did not pass the '.$title.' given on '.   $status.='<h2>'
     $start_time.'</h2>';                                  .&mt('You did not pass the [_1] given on [_2].',$title,$start_time)
                                   .'</h2>';
  $status.=$question_status;   $status.=$question_status;
  if (!$previous) {   if (!$previous) {
     $status.=&add_request_another_attempt_button();      $status.=&add_request_another_attempt_button();
Line 1307  DONEBUTTON Line 1326  DONEBUTTON
     }      }
  }   }
  if (exists($Apache::lonhomework::results{'INTERNAL_store'})) {   if (exists($Apache::lonhomework::results{'INTERNAL_store'})) {
     # instance generation occured and hasn't yet been stored      # instance generation occurred and hasn't yet been stored
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
  }   }
     } elsif ($target eq 'webgrade') {      } elsif ($target eq 'webgrade') {
Line 1521  sub get_limited_classlist { Line 1540  sub get_limited_classlist {
         }          }
     }      }
   
     if (ref($sections) && !grep('all',@{ $sections })) {      if (ref($sections) && !grep {$_ eq 'all'} (@{ $sections })) {
  foreach my $student (keys(%$classlist)) {   foreach my $student (keys(%$classlist)) {
     my $section  =       my $section  = 
  $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()];   $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()];
     if (! grep($section,@{ $sections })) {      if (! grep {$_ eq $section} (@{ $sections })) {
  delete($classlist->{$student});   delete($classlist->{$student});
     }      }
  }   }
Line 1541  sub show_queue { Line 1560  sub show_queue {
     my $cnum=$env{'course.'.$cid.'.num'};      my $cnum=$env{'course.'.$cid.'.num'};
     my $cdom=$env{'course.'.$cid.'.domain'};      my $cdom=$env{'course.'.$cid.'.domain'};
   
     my @chosen_sections=      my @chosen_sections = &get_allowed_sections();
  &Apache::loncommon::get_env_multiple('form.chosensections');  
   
     my $classlist = &get_limited_classlist(\@chosen_sections);      my $classlist = &get_limited_classlist(\@chosen_sections);
   
     if (!(grep(/^all$/,@chosen_sections))) {      if (!(grep(/^all$/,@chosen_sections))) {
  $result.='<p> Showing only sections <tt>'.join(', ',@chosen_sections).   $result.='<p>'
     '</tt>.</p> '."\n";                  .&mt('Showing only sections [_1].'
                       ,'<tt>'.join(', ',@chosen_sections).'</tt>')
                   ."</p>\n";
     }      }
   
     my ($view,$view_section);      my ($view,$view_section);
Line 1565  sub show_queue { Line 1585  sub show_queue {
     $result .=       $result .= 
  '<p><a href="/adm/flip?postdata=return:">'.   '<p><a href="/adm/flip?postdata=return:">'.
  &mt('Return to resource').'</a></p><hr />'.   &mt('Return to resource').'</a></p><hr />'.
  "\n<h3>Current Queue - $queue</h3>";   "\n<h3>".&mt('Current Queue - [_1]',$queue)."</h3>";
     my $regexp="^$symb\0";      my $regexp="^$symb\0";
     my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp);      my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp);
     my ($tmp)=%queue;      my ($tmp)=%queue;
     if ($tmp=~/^error: 2 /) {      if ($tmp=~/^error: 2 /) {
  $result.=   $result.=
       
     &Apache::loncommon::start_data_table().      &Apache::loncommon::start_data_table().
     &Apache::loncommon::start_data_table_row().      &Apache::loncommon::start_data_table_row().
     '<td>'.&mt('Empty').'</td>'.      '<td>'.&mt('Empty').'</td>'.
Line 1583  sub show_queue { Line 1602  sub show_queue {
     $result.=      $result.=
  &Apache::loncommon::start_data_table().   &Apache::loncommon::start_data_table().
  &Apache::loncommon::start_data_table_header_row();   &Apache::loncommon::start_data_table_header_row();
     if ($with_selects) { $result.="<th>Status</th><th></th>"; }      if ($with_selects) { $result.='<th>'.&mt('Status').'</th><th></th>'; }
     $result.="<th>user</th><th>data</th>".      $result.='<th>'.&mt('User').'</th><th>'.&mt('Data').'</th>'.
  &Apache::loncommon::end_data_table_header_row();   &Apache::loncommon::end_data_table_header_row();
     foreach my $key (sort(keys(%queue))) {      foreach my $key (sort(keys(%queue))) {
  my ($symb,$uname,$udom) = &decode_queue_key($key);   my ($symb,$uname,$udom) = &decode_queue_key($key);
  next if (!defined($classlist->{$uname.':'.$udom}));   next if (!defined($classlist->{$uname.':'.$udom}));
  next if (&section_restricted($classlist->{$uname.':'.$udom}));   next if (!&allow_grade_user($classlist->{$uname.':'.$udom}));
   
  my $section = $classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_SECTION()];   my $section = $classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_SECTION()];
   
Line 1631  sub show_queue { Line 1650  sub show_queue {
    'start');     'start');
     }      }
     my $me=$env{'user.name'}.':'.$env{'user.domain'};      my $me=$env{'user.name'}.':'.$env{'user.domain'};
     $status=&mt('Locked by <tt>[_1]</tt> [_2]',$locker,$time);      $status=&mt('Locked by [_1] [_2]','<tt>'.$locker.'</tt>',$time);
     if ($me eq $locker) {      if ($me eq $locker) {
  ($action,$description)=('resume',&mt('Resume'));   ($action,$description)=('resume',&mt('Resume'));
     } else {      } else {
Line 1666  FORM Line 1685  FORM
     }      }
     $result.= "<td>".$classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_FULLNAME()].      $result.= "<td>".$classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_FULLNAME()].
  " <tt>($uname:$udom)</tt> </td>";   " <tt>($uname:$udom)</tt> </td>";
     $result.='<td>'.$slot_text.' End time: '.              $result.='<td>'.$slot_text.' '
  &Apache::lonlocal::locallocaltime($end_time).                      .&mt('End time: [_1]'
  "</td>".&Apache::loncommon::end_data_table_row();                          ,&Apache::lonlocal::locallocaltime($end_time))
                       .'</td>'
                       .&Apache::loncommon::end_data_table_row();
  }   }
     }      }
     $result.= &Apache::loncommon::end_data_table()."<hr />\n";      $result.= &Apache::loncommon::end_data_table()."<hr />\n";
     return $result;      return $result;
 }  }
   
   sub get_allowed_sections {
       my @chosen_sections;
       if (&section_restricted()) {
    @chosen_sections = ($env{'request.course.sec'});
       } else {
    @chosen_sections =
       &Apache::loncommon::get_env_multiple('form.chosensections');
       }
   
       return @chosen_sections;
   }
   
 sub section_restricted {  sub section_restricted {
     my ($classlist_entry) = @_;  
     my $cid =(&Apache::lonnet::whichuser())[1];      my $cid =(&Apache::lonnet::whichuser())[1];
     if (lc($env{'course.'.$cid.'.task_grading'}) eq 'section'      return (lc($env{'course.'.$cid.'.task_grading'}) eq 'section'
  && $env{'request.course.sec'}      && $env{'request.course.sec'} ne '' );
   }
   
   sub allow_grade_user {
       my ($classlist_entry) = @_;
   
       if (&section_restricted()
  && $env{'request.course.sec'} ne   && $env{'request.course.sec'} ne
       $classlist_entry->[&Apache::loncoursedata::CL_SECTION()]) {        $classlist_entry->[&Apache::loncoursedata::CL_SECTION()]) {
  return 1;   return 0;
     }      }
     return 0;      return 1;
 }  }
   
 sub get_queue_counts {  sub get_queue_counts {
Line 1708  sub get_queue_counts { Line 1746  sub get_queue_counts {
     foreach my $key (sort(keys(%queue))) {      foreach my $key (sort(keys(%queue))) {
  my ($symb,$uname,$udom) = &decode_queue_key($key);   my ($symb,$uname,$udom) = &decode_queue_key($key);
  next if (!defined($classlist->{$uname.':'.$udom}));   next if (!defined($classlist->{$uname.':'.$udom}));
  next if (&section_restricted($classlist->{$uname.':'.$udom}));   next if (!&allow_grade_user($classlist->{$uname.':'.$udom}));
   
  if ($key=~/locked$/) {   if ($key=~/locked$/) {
     $locks++;      $locks++;
Line 1787  sub pick_from_queue_data { Line 1825  sub pick_from_queue_data {
   
  my ($symb,$uname,$udom)=&decode_queue_key($key);   my ($symb,$uname,$udom)=&decode_queue_key($key);
  next if (!defined($classlist->{$uname.':'.$udom}));   next if (!defined($classlist->{$uname.':'.$udom}));
  next if (&section_restricted($classlist->{$uname.':'.$udom}));   next if (!&allow_grade_user($classlist->{$uname.':'.$udom}));
   
  if ($check_section) {   if ($check_section) {
     my $section =      my $section =
Line 1912  sub get_queue_symb_status { Line 1950  sub get_queue_symb_status {
  next if ($key=~/timestamp$/);   next if ($key=~/timestamp$/);
  my ($symb,$uname,$udom) = &decode_queue_key($key);   my ($symb,$uname,$udom) = &decode_queue_key($key);
  next if (!defined($classlist->{$uname.':'.$udom}));   next if (!defined($classlist->{$uname.':'.$udom}));
  next if (&section_restricted($classlist->{$uname.':'.$udom}));   next if (!&allow_grade_user($classlist->{$uname.':'.$udom}));
  push(@users,"$uname:$udom");   push(@users,"$uname:$udom");
     }      }
     return @users;      return @users;
Line 1999  sub get_from_queue { Line 2037  sub get_from_queue {
 sub select_user {  sub select_user {
     my ($symb,$cid)=&Apache::lonnet::whichuser();      my ($symb,$cid)=&Apache::lonnet::whichuser();
   
     my @chosen_sections=      my @chosen_sections = &get_allowed_sections();
  &Apache::loncommon::get_env_multiple('form.chosensections');  
   
     my $classlist = &get_limited_classlist(\@chosen_sections);      my $classlist = &get_limited_classlist(\@chosen_sections);
           
     my $result;      my $result;
     if (!(grep(/^all$/,@chosen_sections))) {      if (!(grep(/^all$/,@chosen_sections))) {
  $result.='<p> Showing only sections <tt>'.join(', ',@chosen_sections).          $result.='<p>'
     '</tt>.</p> '."\n";                  .&mt('Showing only sections [_1].'
                       ,'<tt>'.join(', ',@chosen_sections).'</tt>')
                   .'</p> '."\n";
     }      }
     $result.=&Apache::loncommon::start_data_table();      $result.=&Apache::loncommon::start_data_table();
   
Line 2043  sub select_user { Line 2081  sub select_user {
  $seclist.='<input type="hidden" name="chosensections"    $seclist.='<input type="hidden" name="chosensections" 
                                value="'.$sec.'" />';                                 value="'.$sec.'" />';
     }      }
               my $buttontext=&mt('Regrade');
     $result.=&Apache::loncommon::start_data_table_row();      $result.=&Apache::loncommon::start_data_table_row();
     $result.=<<RESULT;      $result.=<<RESULT;
   <td>    <td>
Line 2051  sub select_user { Line 2090  sub select_user {
       <input type="hidden" name="queue" value="$queue" />        <input type="hidden" name="queue" value="$queue" />
       <input type="hidden" name="webgrade" value="no" />        <input type="hidden" name="webgrade" value="no" />
       <input type="hidden" name="regrade" value="yes" />        <input type="hidden" name="regrade" value="yes" />
       <input type="submit" name="submit" value="Regrade" />        <input type="submit" name="submit" value="$buttontext" />
       $seclist        $seclist
     </form>      </form>
   <td>$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()] <tt>($student)</tt></td>    <td>$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()] <tt>($student)</tt> Sec: $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()]</td>
   <td>    <td>
 RESULT  RESULT
         }          }
Line 2404  sub end_Dimension { Line 2443  sub end_Dimension {
     ('sub' x $dimension{$dim}{'depth'}).'question';      ('sub' x $dimension{$dim}{'depth'}).'question';
  $ucquestion =~ s/^(.)/uc($1)/e;   $ucquestion =~ s/^(.)/uc($1)/e;
  if ($dim_status eq 'pass') {   if ($dim_status eq 'pass') {
     $dim_info.='<h3>'.$ucquestion.' : you passed this '.$mandatory.' '.$question.'</h3>';                      $dim_info.='<h3>'.$ucquestion.' : '
                                 .&mt('you passed this [_1] [_2]',$mandatory,$question)
                                 .'</h3>';
  }   }
  if ($dim_status eq 'fail') {   if ($dim_status eq 'fail') {
     $dim_info.='<h3>'.$ucquestion.' : you did not pass this '.$mandatory.' '.$question.'</h3>';                      $dim_info.='<h3>'.$ucquestion.' : '
                                 .&mt('you did not pass this [_1] [_2]',$mandatory,$question)
                                 .'</h3>';
  }   }
  my %counts = &get_counts($dim,$instance,$parstack,   my %counts = &get_counts($dim,$instance,$parstack,
  $safeeval);   $safeeval);
Line 2606  sub question_status_message { Line 2649  sub question_status_message {
     }      }
     $status .= '.';      $status .= '.';
     if ($counts->{'opt'}) {      if ($counts->{'opt'}) {
  $status .= ' You were required to pass '.$counts->{'opt_req'}.          if ($counts->{'opt_dim'} + $counts->{'man_dim'} < 1) {
     ' optional ';              $status .= ' '.&mt('You were required to pass [quant,_1,optional criterion,optional criteria].',$counts->{'opt_req'});
  if ($counts->{'opt_dim'} + $counts->{'man_dim'} < 1) {          } else { 
     $status .=              $status .= ' '.&mt('You were required to pass [quant,_1,optional component].',$counts->{'opt_req'});
  ($counts->{'opt_req'} == 1?'criterion':'criteria');          }
  } else {  
     $status .=  
  'component'.($counts->{'opt_req'} == 1?'':'s');  
  }  
  $status .= '.';  
     }      }
     return $status;      return $status;
 }  }
Line 3090  sub proctor_validation_screen { Line 3128  sub proctor_validation_screen {
     }      }
     if (!$valid) {      if (!$valid) {
  $msg.='<p><span class="LC_error">'   $msg.='<p><span class="LC_error">'
     .&mt("No valid poctors are defined.")      .&mt("No valid proctors are defined.")
     .'</span></p>';      .'</span></p>';
     }      }
           
     if (!$env{'form.proctordomain'}) { $env{'form.proctordomain'}=$domain; }      if (!$env{'form.proctordomain'}) { $env{'form.proctordomain'}=$domain; }
     my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'});      my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'});
     $uri = &HTML::Entities::encode($uri,'<>&"');      $uri = &HTML::Entities::encode($uri,'<>&"');
       my %lt = &Apache::lonlocal::texthash(
                               'prva' => "Proctor Validation",
                               'yoro' => "Your room's proctor needs to validate your access to this resource.",
                               'prus'  => "Proctor's Username:",
                               'pasw'  => "Password:",
                               'prdo'  => "Proctor's Domain:",
                               'vali'  => 'Validate',
                               'stui'  => "Student who should be logged in is:",
                               'name'  => "Name:",
                               'sid'   => "Student ID:",
                               'unam'  => "Username:",
                              );
     my $result= (<<ENDCHECKOUT);      my $result= (<<ENDCHECKOUT);
 <h2>Proctor Validation</h2>  <h2>$lt{'prva'}</h2>
     <p>Your room's proctor needs to validate your access to this resource.</p>      <p>$lt{'yoro'}</p>
     $msg      $msg
 <form name="checkout" method="post" action="$uri">  <form name="checkout" method="post" action="$uri">
 <input type="hidden" name="validate" value="yes" />  <input type="hidden" name="validate" value="yes" />
 <input type="hidden" name="submitted" value="yes" />  <input type="hidden" name="submitted" value="yes" />
 <table>  <table>
   <tr><td>Proctor's Username:</td><td><input type="string" name="proctorname" value="$env{'form.proctorname'}" /></td></tr>    <tr><td>$lt{'prus'}</td><td><input type="string" name="proctorname" value="$env{'form.proctorname'}" /></td></tr>
   <tr><td>Password:</td><td><input type="password" name="proctorpassword" value="" /></td></tr>    <tr><td>$lt{'pasw'}</td><td><input type="password" name="proctorpassword" value="" /></td></tr>
   <tr><td>Proctor's Domain:</td><td><input type="string" name="proctordomain" value="$env{'form.proctordomain'}" /></td></tr>    <tr><td>$lt{'prdo'}</td><td><input type="string" name="proctordomain" value="$env{'form.proctordomain'}" /></td></tr>
 </table>  </table>
 <input type="submit" name="checkoutbutton" value="Validate"  /><br />  <input type="submit" name="checkoutbutton" value="$lt{'vali'}"  /><br />
 <table border="1">  <table border="1">
   <tr><td>    <tr><td>
     <table>      <table>
       <tr><td colspan="2">Student who should be logged in is:</td></tr>        <tr><td colspan="2">$lt{'stui'}</td></tr>
       <tr><td>Name:</td><td>$name</td></tr>        <tr><td>$lt{'name'}</td><td>$name</td></tr>
       <tr><td>Student ID:</td><td>$env{'environment.id'}</td></tr>        <tr><td>$lt{'sid'}</td><td>$env{'environment.id'}</td></tr>
       <tr><td>Usename</td><td>$user:$domain</td></tr>        <tr><td>$lt{'unam'}</td><td>$user:$domain</td></tr>
       $url        $url
     </table>      </table>
   </tr></td>    </tr></td>
 </table>  </table>
 </form>  </form>
 ENDCHECKOUT  ENDCHECKOUT
   
     return $result;      return $result;
 }  }
   

Removed from v.1.236  
changed lines
  Added in v.1.243


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