Diff for /loncom/homework/bridgetask.pm between versions 1.209 and 1.224

version 1.209, 2006/11/27 23:24:36 version 1.224, 2007/01/26 19:06:37
Line 98  sub check_in { Line 98  sub check_in {
  &check_in_sequence($user,$domain,$slot_name);   &check_in_sequence($user,$domain,$slot_name);
     } else {      } else {
  &create_new_version($type,$user,$domain,$slot_name);   &create_new_version($type,$user,$domain,$slot_name);
    &Apache::structuretags::finalize_storage();
     }      }
     return 1;      return 1;
 }  }
Line 590  sub start_Task { Line 591  sub start_Task {
     &Apache::structuretags::page_start($target,$token,$tagstack,      &Apache::structuretags::page_start($target,$token,$tagstack,
        $parstack,$parser,$safeeval,         $parstack,$parser,$safeeval,
        $name,&style($target));         $name,&style($target));
  $result .= '<div class="LC_task">'."\n";  
     }      }
   
     if ($target eq 'web' && $env{'request.state'} ne 'construct') {      if ($target eq 'web' && $env{'request.state'} ne 'construct') {
Line 639  sub start_Task { Line 639  sub start_Task {
   'slot' => $slot_name});    'slot' => $slot_name});
     ($version,$previous)=&get_version();      ($version,$previous)=&get_version();
  }   }
   
    my $status_id = 
       ($previous || $status eq 'SHOW_ANSWER') ? 'LC_task_feedback'
                                               : 'LC_task_take';
    $result .= '<div class="LC_task" id="'.$status_id.'">'."\n";
   
  push(@Apache::inputtags::status,$status);   push(@Apache::inputtags::status,$status);
  $Apache::inputtags::slot_name=$slot_name;   $Apache::inputtags::slot_name=$slot_name;
Line 706  sub start_Task { Line 711  sub start_Task {
       $target eq 'webgrade') {        $target eq 'webgrade') {
  my $webgrade='yes';   my $webgrade='yes';
  if ($target eq 'webgrade') {   if ($target eq 'webgrade') {
       $result .= '<div class="LC_task">'."\n";
     $result.= "\n".'<div class="LC_GRADING_task">'."\n".      $result.= "\n".'<div class="LC_GRADING_task">'."\n".
  '<script type="text/javascript"    '<script type="text/javascript" 
                          src="/res/adm/includes/task_grading.js"></script>';                           src="/res/adm/includes/task_grading.js"></script>';
Line 862  sub get_key_todo { Line 868  sub get_key_todo {
  my ($symb,$cid)=&Apache::lonnet::whichuser();   my ($symb,$cid)=&Apache::lonnet::whichuser();
  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 $uname = $env{'form.gradinguser'};   my $uname = &LONCAPA::clean_username($env{'form.gradinguser'});
  my $udom  = $env{'form.gradingdomain'};   my $udom  = &LONCAPA::clean_domain($env{'form.gradingdomain'});
   
  my $gradingkey=&encode_queue_key($symb,$udom,$uname);   my $gradingkey=&encode_queue_key($symb,$udom,$uname);
   
Line 1061  DONEBUTTON Line 1067  DONEBUTTON
     $start_time=&Apache::lonlocal::locallocaltime($start_time);      $start_time=&Apache::lonlocal::locallocaltime($start_time);
   
     my $status =       my $status = 
  "\n<div class='LC_$bt_status LC_criteria'>\n\t";   "\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'>\n\t";
           
       my $dim = $top;
       my %counts = &get_counts($dim,undef,$parstack,
        $safeeval);
       my $question_status ="\n\t<p>".
    &question_status_message(\%counts,-1).
    "</p>\n";
   
     if ($bt_status eq 'pass')  {      if ($bt_status eq 'pass')  {
  $status.='<h2>You passed the '.$title.' given on '.   $status.='<h2>You passed the '.$title.' given on '.
     $start_time.'</h2>';      $start_time.'</h2>';
    $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>You did not pass the '.$title.' given on '.
     $start_time.'</h2>';      $start_time.'</h2>';
    $status.=$question_status;
  if (!$previous) {   if (!$previous) {
     $status.=&add_request_another_attempt_button();      $status.=&add_request_another_attempt_button();
  }   }
     }      }
     $status.="\n".'</div>'."\n";  
     my $dim = $top;  
     my %counts = &get_counts($dim,undef,$parstack,  
      $safeeval);  
     $status.="\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'>\n\t<p>".  
  &question_status_message(\%counts,-1).  
  "</p>\n</div>\n";  
           
       $status.="\n".'</div>'."\n";
   
     foreach my $id (@{$dimension{$dim}{'criterias'}}) {      foreach my $id (@{$dimension{$dim}{'criterias'}}) {
  my $type = $dimension{$dim}{'criteria.'.$id.'.type'};   my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
Line 1113  DONEBUTTON Line 1122  DONEBUTTON
  }   }
   
   
  if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) {   if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous
       && $status eq 'CAN_ANSWER') {
     my $award='SUBMITTED';      my $award='SUBMITTED';
     &Apache::essayresponse::file_submission("$version.0",'bridgetask',      &Apache::essayresponse::file_submission("$version.0",'bridgetask',
     'portfiles',\$award);      'portfiles',\$award);
Line 1574  sub show_queue { Line 1584  sub show_queue {
  my $ekey=&escape($key);   my $ekey=&escape($key);
  my ($action,$description,$status)=('select',&mt('Select'));   my ($action,$description,$status)=('select',&mt('Select'));
  if (exists($queue{"$key\0locked"})) {   if (exists($queue{"$key\0locked"})) {
       my ($locker,$time) = 
    &get_lock_info($queue{"$key\0locked"});
       if ($time) {
    $time = 
       &Apache::lonnavmaps::timeToHumanString($time,
      'start');
       }
     my $me=$env{'user.name'}.':'.$env{'user.domain'};      my $me=$env{'user.name'}.':'.$env{'user.domain'};
     $status=&mt('Locked by <tt>[_1]</tt>',$queue{"$key\0locked"});      $status=&mt('Locked by <tt>[_1]</tt> [_2]',$locker,$time);
     if ($me eq $queue{"$key\0locked"}) {      if ($me eq $locker) {
  ($action,$description)=('resume',&mt('Resume'));   ($action,$description)=('resume',&mt('Resume'));
     } else {      } else {
  ($action,$description)=('unlock',&mt('Unlock'));   ($action,$description)=('unlock',&mt('Unlock'));
Line 1686  sub queue_key_locked { Line 1703  sub queue_key_locked {
     my ($key_locked,$value)=      my ($key_locked,$value)=
  &Apache::lonnet::get($queue,["$key\0locked"],$cdom,$cnum);   &Apache::lonnet::get($queue,["$key\0locked"],$cdom,$cnum);
     if ($key_locked eq "$key\0locked") {      if ($key_locked eq "$key\0locked") {
  return $value;   return &get_lock_info($value);
     }      }
     return undef;      return undef;
 }  }
Line 1767  sub pick_from_queue_data { Line 1784  sub pick_from_queue_data {
     return undef;      return undef;
 }  }
   
   sub get_lock_info {
       my ($lock_info) = @_;
       if (wantarray) {
    if (ref($lock_info) eq 'ARRAY') {
       return @{$lock_info};
    } else {
       return ($lock_info);
    }
       } else {
    if (ref($lock_info) eq 'ARRAY') {
       return $lock_info->[0];
    } else {
       return $lock_info;
    }
       }
       return;
   }
   
 sub find_mid_grade {  sub find_mid_grade {
     my ($queue,$symb,$cdom,$cnum)=@_;      my ($queue,$symb,$cdom,$cnum)=@_;
     my $todo=&unescape($env{'form.gradingkey'});      my $todo=&unescape($env{'form.gradingkey'});
Line 1778  sub find_mid_grade { Line 1813  sub find_mid_grade {
     my $regexp="^$symb\0.*\0locked\$";      my $regexp="^$symb\0.*\0locked\$";
     my %locks=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp);      my %locks=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp);
     foreach my $key (keys(%locks)) {      foreach my $key (keys(%locks)) {
  my $who=$locks{$key};   my $who= &get_lock_info($locks{$key});
  if ($who eq $me) {   if ($who eq $me) {
     $todo=$key;      $todo=$key;
     $todo=~s/\0locked$//;      $todo=~s/\0locked$//;
Line 1794  sub lock_key { Line 1829  sub lock_key {
     my (undef,$cid)=&Apache::lonnet::whichuser();      my (undef,$cid)=&Apache::lonnet::whichuser();
     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 $success=&Apache::lonnet::newput($queue,{"$todo\0locked"=> $me},      my $success=&Apache::lonnet::newput($queue,{"$todo\0locked"=> [$me,time]},
  $cdom,$cnum);   $cdom,$cnum);
     &Apache::lonxml::debug("success $success $todo");      &Apache::lonxml::debug("success $success $todo");
     if ($success eq 'ok') {      if ($success eq 'ok') {
Line 2210  sub end_Dimension { Line 2245  sub end_Dimension {
     my $result=&Apache::lonxml::endredirection();      my $result=&Apache::lonxml::endredirection();
     my $dim=&get_id($parstack,$safeeval);      my $dim=&get_id($parstack,$safeeval);
     if (&skip_dimension_parsing($dim)) {      if (&skip_dimension_parsing($dim)) {
  &disable_dimension_parsing($dim);  
  pop(@Apache::bridgetask::dimension);   pop(@Apache::bridgetask::dimension);
  return;   return;
     }      }
Line 2250  sub end_Dimension { Line 2284  sub end_Dimension {
  }   }
  my $dim_info=   my $dim_info=
     "\n<div class='LC_$dim_status LC_question_grade'>\n\t";      "\n<div class='LC_$dim_status LC_question_grade'>\n\t";
  my $question = ('sub' x $dimension{$dim}{'depth'}).'question';   my $ucquestion = 
  $question =~ s/^(.)/uc($1)/e;      my $question = 
       ('sub' x $dimension{$dim}{'depth'}).'question';
    $ucquestion =~ s/^(.)/uc($1)/e;
  if ($dim_status eq 'pass') {   if ($dim_status eq 'pass') {
     $dim_info.='<h3>'.$question.' : you passed the above '.$mandatory.' question</h3>';      $dim_info.='<h3>'.$ucquestion.' : you passed this '.$mandatory.' '.$question.'</h3>';
  }   }
  if ($dim_status eq 'fail') {   if ($dim_status eq 'fail') {
     $dim_info.='<h3>'.$question.' : you did not pass the above '.$mandatory.' question</h3>';      $dim_info.='<h3>'.$ucquestion.' : you did not pass this '.$mandatory.' '.$question.'</h3>';
  }   }
  my %counts = &get_counts($dim,$instance,$parstack,   my %counts = &get_counts($dim,$instance,$parstack,
  $safeeval);   $safeeval);
Line 2300  sub end_Dimension { Line 2336  sub end_Dimension {
     # those old ones will continue to work.  # It puts the      # those old ones will continue to work.  # It puts the
     # LC_question div to come after any starting closie div      # LC_question div to come after any starting closie div
     # that the dimension produces      # that the dimension produces
     if ($result =~ m{\s*</div>}) {      if ($result =~ m{^\s*</div>}) {
  $result =~ s{(\s*</div>)}   $result =~ s{^(\s*</div>)}
             {$1\n<div class="LC_question">};              {$1\n<div id="$dim" class="LC_question">};
     } else {      } else {
  $result = "\n".'<div class="LC_question">'.   $result = "\n".'<div id="'.$dim.'" class="LC_question">'.
     "\n".$result;      "\n".$result;
     }      }
     $result .= "\n</div>\n";      $result .= "\n</div>\n";
Line 2429  sub question_status_message { Line 2465  sub question_status_message {
  foreach my $type ('cri','dim') {   foreach my $type ('cri','dim') {
     if ($counts->{$req.'_'.$type}) {      if ($counts->{$req.'_'.$type}) {
  push(@sections,   push(@sections,
      $counts->{$req.'_'.$type.'_passed'}.' of '.       $counts->{$req.'_'.$type.'_passed'}.' of the '.
      $counts->{$req.'_'.$type}.' '.       $counts->{$req.'_'.$type}.' '.
      $req{$req}.' '.$type{$type});       $req{$req}.' '.$type{$type});
     }      }
Line 2449  sub question_status_message { Line 2485  sub question_status_message {
     $status .= '.';      $status .= '.';
     if ($counts->{'opt'}) {      if ($counts->{'opt'}) {
  $status .= ' You were required to pass '.$counts->{'opt_req'}.   $status .= ' You were required to pass '.$counts->{'opt_req'}.
     ' optional component'.($counts->{'opt_req'} == 1?'':'s');      ' optional ';
    if ($counts->{'opt_dim'} + $counts->{'man_dim'} < 1) {
       $status .=
    ($counts->{'opt_req'} == 1?'criterion':'criteria');
    } else {
       $status .=
    'component'.($counts->{'opt_req'} == 1?'':'s');
    }
    $status .= '.';
     }      }
     return $status;      return $status;
 }  }

Removed from v.1.209  
changed lines
  Added in v.1.224


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