Diff for /loncom/homework/bridgetask.pm between versions 1.68 and 1.80

version 1.68, 2005/10/05 20:24:59 version 1.80, 2005/11/21 17:47:37
Line 68  sub proctor_check_auth { Line 68  sub proctor_check_auth {
     foreach my $possible (@allowed) {      foreach my $possible (@allowed) {
  my ($puser,$pdom)=(split('@',$possible));   my ($puser,$pdom)=(split('@',$possible));
  if ($puser eq $user && $pdom eq $domain) {   if ($puser eq $user && $pdom eq $domain) {
     my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom);      my $authenticated=0;
     if ($authhost ne 'no_host') {      if ( $slot->{'secret'} =~ /\S/ &&
    $env{'form.proctorpassword'} eq $slot->{'secret'} ) {
    $authenticated=1;
       } else {
   
    my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom);
    if ($authhost ne 'no_host') {
       $authenticated=1;
    }
       }
       if ($authenticated) {
  my $version=   my $version=
     $Apache::lonhomework::results{'resource.version'}=      $Apache::lonhomework::results{'resource.version'}=
     ++$Apache::lonhomework::history{'resource.version'};      ++$Apache::lonhomework::history{'resource.version'};
Line 317  sub submission_time_stamp { Line 327  sub submission_time_stamp {
  my $slot_name=$Apache::lonhomework::history{'resource.'.$version.'.checkedin.slot'};   my $slot_name=$Apache::lonhomework::history{'resource.'.$version.'.checkedin.slot'};
  my %slot=&Apache::lonnet::get_slot($slot_name);   my %slot=&Apache::lonnet::get_slot($slot_name);
  my $diff = $slot{'endtime'} - $submissiontime;   my $diff = $slot{'endtime'} - $submissiontime;
  my ($color,$when)=('red','after');   my ($color,$when)=('#FF6666','after');
  if ($diff > 0) { ($color,$when)=('green','before'); }   if ($diff > 0) { ($color,$when)=('#336600','before'); }
  my $info;   my $info;
  if ($diff%60) { $info=($diff%60).' seconds'; }   if ($diff%60) { $info=($diff%60).' seconds'; }
  $diff=int($diff/60);   $diff=int($diff/60);
Line 335  sub submission_time_stamp { Line 345  sub submission_time_stamp {
     return $result;      return $result;
 }  }
   
   sub webgrade_standard_info {
       my ($version)=&get_version();
       my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser();
       my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/';
       my $file_list="<ul>\n";
       foreach my $partial_file (split(',',$Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"})) {
    my $file=$file_url.$partial_file;
    $file=~s|/+|/|g;
    &Apache::lonnet::allowuploaded('/adm/bridgetask',$file);
    $file_list.='<li><nobr><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.
       &Apache::loncommon::icon($file).'" border=0"> '.$file.
       '</a></nobr></li>'."\n";
       }
       $file_list.="</ul>\n";
   
       my %lt=&Apache::lonlocal::texthash('done' => 'Done',
          'stop' => 'Stop',
          );
          
       my $result=<<INFO;
   <div class="handininfo">
     <input type="submit" name="next" value="$lt{'done'}" />
     <input type="submit" name="stop" value="$lt{'stop'}" />
     $file_list
   </div>
   INFO
       return $result;
   }
   
 sub start_Task {  sub start_Task {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   
     my ($status,$accessmsg,$slot);      my ($status,$accessmsg,$slot);
     if ($target ne 'webgrade') {      if ($target ne 'webgrade') {
    &Apache::structuretags::init_problem_globals('Task');
  &Apache::structuretags::initialize_storage();   &Apache::structuretags::initialize_storage();
  &Apache::lonhomework::showhash(%Apache::lonhomework::history);   &Apache::lonhomework::showhash(%Apache::lonhomework::history);
    if ($env{'request.state'} eq 'construct') {
       &Apache::structuretags::setup_rndseed($safeeval);
    }
     }       } 
   
     $Apache::lonhomework::parsing_a_task=1;      $Apache::lonhomework::parsing_a_task=1;
Line 349  sub start_Task { Line 392  sub start_Task {
     my ($result,$head_tag_start,$body_tag_start,$form_tag_start)=      my ($result,$head_tag_start,$body_tag_start,$form_tag_start)=
  &Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);   &Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
           
     if ($target eq 'web') {      if ($target eq 'web' && $env{'request.state'} ne 'construct') {
  if ($Apache::lonhomework::modifygrades) {   if ($Apache::lonhomework::modifygrades) {
     $body_tag_start.='<form name="gradesubmission" method="POST" action="';      $body_tag_start.='<form name="gradesubmission" method="POST" action="';
     my $uri=$env{'request.uri'};      my $uri=$env{'request.uri'};
Line 366  sub start_Task { Line 409  sub start_Task {
     }      }
  }   }
     }      }
       if ($target eq 'web' && $env{'request.state'} eq 'construct') {
    $form_tag_start.=&Apache::structuretags::problem_web_to_edit_header($env{'form.rndseed'});
       }
     if ($target eq 'web' || ($target eq 'grade' && !$env{'form.webgrade'}) || $target eq 'answer' ||      if ($target eq 'web' || ($target eq 'grade' && !$env{'form.webgrade'}) || $target eq 'answer' ||
  $target eq 'tex') {   $target eq 'tex') {
  my ($version,$previous)=&get_version();   my ($version,$previous)=&get_version();
Line 382  sub start_Task { Line 428  sub start_Task {
     my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);      my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);
     if ( $target eq "web" ) {      if ( $target eq "web" ) {
  $result.= $head_tag_start.'</head>'.$body_tag_start;   $result.= $head_tag_start.'</head>'.$body_tag_start;
    if ($env{'request.state'} eq 'construct') {
       $result.=$form_tag_start;
    }
  my $msg;   my $msg;
  if ($status eq 'UNAVAILABLE') {   if ($status eq 'UNAVAILABLE') {
     $msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>';      $msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>';
Line 421  DONESCREEN Line 470  DONESCREEN
  }   }
     } elsif ($target eq 'grade' && !$env{'form.webgrade'}) {      } elsif ($target eq 'grade' && !$env{'form.webgrade'}) {
  if ($status eq 'NEEDS_CHECKIN') {   if ($status eq 'NEEDS_CHECKIN') {
     &proctor_check_auth($slot_name,$slot);      if(&proctor_check_auth($slot_name,$slot)) {
    my $result=&add_to_queue('gradingqueue',
    $Apache::inputtags::slot_name);
    &Apache::lonxml::debug("add_to_queue said $result");
       }
  }   }
     }      }
  } elsif ($target eq 'web') {   } elsif ($target eq 'web') {
Line 511  DONESCREEN Line 564  DONESCREEN
                                value="'.$sec.'" />';                                 value="'.$sec.'" />';
  }   }
     }      }
       if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); }
  }   }
       } elsif ($target eq 'edit') {
    $result.=$head_tag_start."</head>".$body_tag_start.$form_tag_start.
       &Apache::structuretags::problem_edit_header();
    $Apache::lonxml::warnings_error_header=
       &mt("Editor Errors - these errors might not effect the running of the problem, but they will likely cause problems with further use of the Edit mode. Please use the EditXML mode to fix these errors.")."<br />";
    my $temp=&Apache::edit::insertlist($target,$token);
    $result.=$temp;
     } else {      } else {
  # page_start returned a starting result, delete it if we don't need it   # page_start returned a starting result, delete it if we don't need it
  $result = '';   $result = '';
Line 610  sub get_key_todo { Line 671  sub get_key_todo {
     }      }
     return (undef,undef)      return (undef,undef)
 }  }
   
 sub end_Task {  sub end_Task {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result='';      my $result='';
Line 618  sub end_Task { Line 678  sub end_Task {
     my ($version,$previous)=&get_version();      my ($version,$previous)=&get_version();
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||      if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||
  $target eq 'tex') {   $target eq 'tex') {
  if (   if ($target eq 'web' || $target eq 'answer' || $target eq 'tex') {
     (($target eq 'web') && ($env{'request.state'} ne 'construct')) ||  
     ($target eq 'answer') || ($target eq 'tex')  
    ) {  
     if ($target eq 'web') {      if ($target eq 'web') {
  if (&show_task($status,$previous)) {   if (&show_task($status,$previous)) {
     $result.=&Apache::lonxml::endredirection();      $result.=&Apache::lonxml::endredirection();
Line 636  sub end_Task { Line 693  sub end_Task {
 <h2>'.&mt('Submit Portfolio Files for Grading').'</h2>  <h2>'.&mt('Submit Portfolio Files for Grading').'</h2>
 <p>'.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').'</p>').  <p>'.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').'</p>').
   "</table>";    "</table>";
    }
    if (!$previous && $status ne 'SHOW_ANSWER' &&
       &show_task($status,$previous)) {
     $result.=&Apache::inputtags::gradestatus('0');      $result.=&Apache::inputtags::gradestatus('0');
     $result.='</form>';      $result.='</form>';
     $result.=<<DONEBUTTON;      $result.=<<DONEBUTTON;
Line 644  sub end_Task { Line 704  sub end_Task {
    <input type="submit" value="Done" />     <input type="submit" value="Done" />
 </form>  </form>
 DONEBUTTON  DONEBUTTON
  }                  }
  if (&show_task($status,$previous) &&   if (&show_task($status,$previous) &&
     $Apache::lonhomework::history{"resource.$version.status"} =~ /^(pass|fail)$/) {      $Apache::lonhomework::history{"resource.$version.status"} =~ /^(pass|fail)$/) {
     my $bt_status=$Apache::lonhomework::history{"resource.$version.status"};      my $bt_status=$Apache::lonhomework::history{"resource.$version.status"};
     my $title=&Apache::lonnet::gettitle();      my $title=&Apache::lonnet::gettitle();
     my %slot=&Apache::lonnet::get_slot($Apache::inputtags::slot_name);  
       my $slot_name=
    $Apache::lonhomework::history{"resource.$version.checkedin.slot"};
       my %slot=&Apache::lonnet::get_slot($slot_name);
     my $start_time=      my $start_time=
  &Apache::lonlocal::locallocaltime($slot{'starttime'});   &Apache::lonlocal::locallocaltime($slot{'starttime'});
   
     my $status;      my $status = "\n<div class='$bt_status'>\n";
     $status.="\n<div class='$bt_status'>\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>';
     }      }
     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>';
  if (!$previous) {   if (!$previous) {
     $status.=&add_request_another_attempt_button();      $status.=&add_request_another_attempt_button();
  }   }
Line 711  DONEBUTTON Line 773  DONEBUTTON
     $Apache::lonhomework::results{"resource.$version.0.submission"}='';      $Apache::lonhomework::results{"resource.$version.0.submission"}='';
     } else {      } else {
  delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});   delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});
    $award = '';
     }      }
     &Apache::lonhomework::showhash(%Apache::lonhomework::results);      &Apache::lonhomework::showhash(%Apache::lonhomework::results);
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
     if ($award eq 'SUBMITTED') {      if ($award eq 'SUBMITTED') {
  &add_to_queue('gradingqueue',$Apache::inputtags::slot_name);   &add_to_queue('gradingqueue',$Apache::inputtags::slot_name);
     }      }
    } elsif ($Apache::lonhomework::results{'INTERNAL_store'}) {
       &Apache::structuretags::finalize_storage();
  }   }
  if ($target eq 'grade' && $env{'form.webgrade'} eq 'yes') {   if ($target eq 'grade' && $env{'form.webgrade'} eq 'yes') {
     my $optional_required=      my $optional_required=
Line 827  DONEBUTTON Line 892  DONEBUTTON
  #    &mt('Save Partial Grade and Continue Grading').'" /> ';   #    &mt('Save Partial Grade and Continue Grading').'" /> ';
  $result.='</form>'.&Apache::loncommon::endbodytag().'</html>';   $result.='</form>'.&Apache::loncommon::endbodytag().'</html>';
     } elsif ($target eq 'meta') {      } elsif ($target eq 'meta') {
  $result.='<parameter part="0" package="Task"></parameter>'."\n";   $result.=&Apache::response::meta_package_write('Task');
  #$result.=&Apache::response::meta_part_order();          $result.=&Apache::response::meta_stores_write('solved','string',
  #$result.=&Apache::response::meta_response_order();        'Problem Status');
    $result.=&Apache::response::meta_stores_write('tries','int_zeropos',
         'Number of Attempts');
    $result.=&Apache::response::meta_stores_write('awarded','float',
         'Partial Credit Factor');
    $result.=&Apache::response::meta_stores_write('status','string',
         'Bridge Task Status');
     }      }
     undef($Apache::lonhomework::parsing_a_task);      undef($Apache::lonhomework::parsing_a_task);
     return $result;      return $result;
Line 936  sub add_to_queue { Line 1007  sub add_to_queue {
     my $cdom=$env{'course.'.$cid.'.domain'};      my $cdom=$env{'course.'.$cid.'.domain'};
     my %data;      my %data;
     $data{"$symb\0queue\0$uname\@$udom"}=[$slot_name];      $data{"$symb\0queue\0$uname\@$udom"}=[$slot_name];
     return &Apache::lonnet::put($queue,\%data,$cdom,$cnum);      return &Apache::lonnet::newput($queue,\%data,$cdom,$cnum);
 }  }
   
 sub show_queue {  sub show_queue {
Line 1368  sub start_Dimension { Line 1439  sub start_Dimension {
 }  }
   
 sub get_instance {  sub get_instance {
     &Apache::response::pushrandomnumber();      my ($dim)=@_;
     my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});      my $rand_alg=&Apache::lonnet::get_rand_alg();
     my $num=@order;      if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' ||
     my $version=&get_version();   $rand_alg eq '64bit2' || $rand_alg eq '64bit3' ||
     my $which=($version-1)%$num;   $rand_alg eq '64bit4' ) {
     return $order[$which];   &Apache::response::pushrandomnumber();
    my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});
    my $num=@order;
    my $version=&get_version();
    my $which=($version-1)%$num;
    return $order[$which];
       } else {
    my ($version,$previous) = &get_version();
    my $instance = 
       $Apache::lonhomework::history{"resource.$version.0.$dim.instance"};
    if (defined($instance)) { return $instance; }
   
    &Apache::response::pushrandomnumber();
    my @instances = @{$dimension{'instances'}};
    # remove disabled instances
    for (my $i=0; $i < $#instances; $i++) {
       if ($dimension{$instances[$i].'.disabled'}) {
    splice(@instances,$i,1);
    $i--;
       }
    }
    @instances = &Math::Random::random_permutation(@instances);
    $instance  = $instances[($version-1)%scalar(@instances)];
    $Apache::lonhomework::results{"resource.$version.0.$dim.instance"} = 
       $instance;
    $Apache::lonhomework::results{'INTERNAL_store'} = 1; 
    &Apache::response::poprandomnumber();
    return $instance;
       }
 }  }
   
 {  {
Line 1382  sub get_instance { Line 1481  sub get_instance {
  my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
  my $result=&Apache::lonxml::endredirection();   my $result=&Apache::lonxml::endredirection();
  my $dim=&get_id($parstack,$safeeval);   my $dim=&get_id($parstack,$safeeval);
  my $instance=&get_instance();   my $instance=&get_instance($dim);
  my $version=&get_version();   my $version=&get_version();
  if ($target eq 'web') {   if ($target eq 'web') {
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     $result.=&Apache::scripttag::xmlparse($dimension{'intro'});      $result.=&Apache::scripttag::xmlparse($dimension{'intro'});
     @Apache::scripttag::parser_env = @_;      my @instances = $instance;
     $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'});      if (&Apache::response::showallfoils()) {
     if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass' ||   @instances = @{$dimension{'instances'}};
  $Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {      }
       foreach my $instance (@instances) {
  my $dim_status=$Apache::lonhomework::history{"resource.$version.$dim.status"};   @Apache::scripttag::parser_env = @_;
  my $mandatory='Mandatory';   $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'});
  if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') {   if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass' ||
     $mandatory='Optional';      $Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
  }  
  my $dim_info="<div class='$dim_status'>\n";      my $dim_status=$Apache::lonhomework::history{"resource.$version.$dim.status"};
  if ($dim_status eq 'pass') {      my $mandatory='Mandatory';
     $dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>';      if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') {
  }  
  if ($dim_status eq 'fail') {  
     $dim_info.='<h3>Question : you did not pass this '.$mandatory.' question</h3>';  
  }  
  my $man_count=0;  
  my $man_passed=0;  
  my $opt_count=0;  
  my $opt_passed=0;  
  foreach my $id (@{$dimension{$instance.'.criterias'}}) {  
     if ($dimension{$instance.'.criteria.'.$id.'.mandatory'}   
  eq 'N') {  
  $opt_count++;  
  if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') {  
     $opt_passed++;  
  }  
     } else {  
  $man_count++;  
  if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') {  
     $man_passed++;  
  }  
     }  
  }  
  if ($man_passed eq $man_count) { $man_passed='all'; }  
  my $opt_req=$dimension{$instance.'.optionalrequired'};  
  if ($opt_req !~ /\S/) { $opt_req='0'; }  
  $dim_info.="\n<p>".&mt('You passed [_1] of the [_2] mandatory components and [_3] of the [_4] optional components, of which you were required to pass [_5].',$man_passed,$man_count,$opt_passed,$opt_count,$opt_req)."</p>\n</div>";  
   
  my $internal_location=&internal_location($dim);  
  $result=~s/\Q$internal_location\E/$dim_info/;  
   
  foreach my $id (@{$dimension{$instance.'.criterias'}}) {  
     my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"};  
     my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"};  
     my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N');  
     if ($mandatory) {  
  $mandatory='Mandatory';  
     } else {  
  $mandatory='Optional';   $mandatory='Optional';
     }      }
     if ($status eq 'fail') {      my $dim_info="<div class='$dim_status'>\n";
     } elsif ($status eq 'pass') {      if ($dim_status eq 'pass') {
     } else {   $dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>';
  &Apache::lonxml::error("Student viewing a graded bridgetask was shown a status of $status");  
     }      }
     my $status_display=$status;      if ($dim_status eq 'fail') {
     $status_display=~s/^([a-z])/uc($1)/e;   $dim_info.='<h3>Question : you did not pass this '.$mandatory.' question</h3>';
     @Apache::scripttag::parser_env = @_;      }
     $result.='<div class="'.$status.'"><h4>'.$mandatory.      my $man_count=0;
  ' Criteria</h4><p>';      my $man_passed=0;
     @Apache::scripttag::parser_env = @_;      my $opt_count=0;
     $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id});      my $opt_passed=0;
     $result.='</p><p class="grade">'.$status_display.'</p>';      foreach my $id (@{$dimension{$instance.'.criterias'}}) {
     if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}) {   if ($dimension{$instance.'.criteria.'.$id.'.mandatory'} 
  $result.='<p class="comment">'.$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}.'</p>';      eq 'N') {
       $opt_count++;
       if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') {
    $opt_passed++;
       }
    } else {
       $man_count++;
       if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') {
    $man_passed++;
       }
    }
       }
       if ($man_passed eq $man_count) { $man_passed='all'; }
       my $opt_req=$dimension{$instance.'.optionalrequired'};
       if ($opt_req !~ /\S/) { $opt_req='0'; }
       $dim_info.="\n<p>".&mt('You passed [_1] of the [_2] mandatory components and [_3] of the [_4] optional components, of which you were required to pass [_5].',$man_passed,$man_count,$opt_passed,$opt_count,$opt_req)."</p>\n</div>";
   
       my $internal_location=&internal_location($dim);
       $result=~s/\Q$internal_location\E/$dim_info/;
   
       foreach my $id (@{$dimension{$instance.'.criterias'}}) {
    my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"};
    my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"};
    my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N');
    if ($mandatory) {
       $mandatory='Mandatory';
    } else {
       $mandatory='Optional';
    }
    if ($status eq 'fail') {
    } elsif ($status eq 'pass') {
    } else {
       &Apache::lonxml::error("Student viewing a graded bridgetask was shown a status of $status");
    }
    my $status_display=$status;
    $status_display=~s/^([a-z])/uc($1)/e;
    @Apache::scripttag::parser_env = @_;
    $result.='<div class="'.$status.'"><h4>'.$mandatory.
       ' Criteria</h4><p>';
    @Apache::scripttag::parser_env = @_;
    $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id});
    $result.='</p><p class="grade">'.$status_display.'</p>';
    if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}) {
       $result.='<p class="comment">'.$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"}.'</p>';
    }
    $result.='</div>';
     }      }
     $result.='</div>';  
  }   }
     }      }
  } elsif ($target eq 'webgrade') {   } elsif ($target eq 'webgrade') {
Line 1488  sub get_instance { Line 1593  sub get_instance {
     '<td>'.      '<td>'.
     '<a href="#'.$last_link.'">Prev</a><br />'.      '<a href="#'.$last_link.'">Prev</a><br />'.
     '<a href="#next_'.$link.'">Next</a><br /><br /><br />'.      '<a href="#next_'.$link.'">Next</a><br /><br /><br />'.
     '<input type="submit" name="next" value="'.  
     &mt('Done').'" /> '.  
     '<input type="submit" name="stop" value="'.  
     &mt('Stop').'" /> '.  
     '</td></tr>';      '</td></tr>';
  $result.='<tr><td colspan="4">';  
  my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser();  
  my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/';  
  foreach my $partial_file (split(',',$Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"})) {  
     my $file=$file_url.$partial_file;  
     $file=~s|/+|/|g;  
     &Apache::lonnet::allowuploaded('/adm/bridgetask',$file);  
     $result.='<nobr><a href="'.$file.'" target="lonGRDs"><img src="'.  
  &Apache::loncommon::icon($file).'" border=0"> '.$file.  
  '</a></nobr> ';  
  }  
  $result.='</td></tr>';  
  $last_link=$link;   $last_link=$link;
     }      }
  } elsif ($target eq 'grade' && $env{'form.webgrade'}) {   } elsif ($target eq 'grade' && $env{'form.webgrade'}) {
Line 1545  sub get_instance { Line 1634  sub get_instance {
  $Apache::lonhomework::results{"resource.$version.$dim.status"}=   $Apache::lonhomework::results{"resource.$version.$dim.status"}=
     'pass';      'pass';
     }      }
    } else {
       # any other targets no output
       undef($result);
  }   }
  return $result;   return $result;
     }      }
Line 1576  sub start_Instance { Line 1668  sub start_Instance {
     push(@Apache::bridgetask::instancelist,$id);      push(@Apache::bridgetask::instancelist,$id);
     $dimension{$id.'.optionalrequired'}=      $dimension{$id.'.optionalrequired'}=
  &Apache::lonxml::get_param('OptionalRequired',$parstack,$safeeval);   &Apache::lonxml::get_param('OptionalRequired',$parstack,$safeeval);
       my $disabled = &Apache::lonxml::get_param('Disabled',$parstack,$safeeval);
       if (lc($disabled) eq 'yes') {
    $dimension{$id.'.disabled'}='1';
       }
     return '';      return '';
 }  }
   

Removed from v.1.68  
changed lines
  Added in v.1.80


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