Diff for /loncom/homework/bridgetask.pm between versions 1.226 and 1.232

version 1.226, 2007/02/22 21:40:40 version 1.232, 2007/04/18 00:32:03
Line 38  use Apache::lonlocal; Line 38  use Apache::lonlocal;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::slotrequest();  use Apache::slotrequest();
 use Time::HiRes qw( gettimeofday tv_interval );  use Time::HiRes qw( gettimeofday tv_interval );
 use lib '/home/httpd/lib/perl/';  
 use LONCAPA;  use LONCAPA;
     
   
Line 488  sub webgrade_standard_info { Line 487  sub webgrade_standard_info {
     'stop'   => 'Quit Grading',      'stop'   => 'Quit Grading',
     'fail'   => 'Fail Rest',      'fail'   => 'Fail Rest',
     'cancel' => 'Cancel',      'cancel' => 'Cancel',
       'submit' => 'Submit Grades',
     );      );
     %lt=&Apache::lonlocal::texthash(%lt);      %lt=&Apache::lonlocal::texthash(%lt);
   
Line 495  sub webgrade_standard_info { Line 495  sub webgrade_standard_info {
   <div class="LC_GRADING_maincontrols">    <div class="LC_GRADING_maincontrols">
 INFO  INFO
   
     if (&grade_mode() eq 'regrade') {      if ($env{'request.state'} eq 'construct') {
  $result.=<<INFO;   $result.=<<INFO;
       <input type="submit" name="next" value="$lt{'submit'}" />
   INFO
       } else {
    if (&grade_mode() eq 'regrade' && $env{'request.state'} ne 'construct') {
       $result.=<<INFO;
     <input type="submit" name="cancel" value="$lt{'cancel'}" />      <input type="submit" name="cancel" value="$lt{'cancel'}" />
 INFO  INFO
     }          }
   
     $result.=<<INFO;   $result.=<<INFO;
     <input type="submit" name="next" value="$lt{'done'}" />      <input type="submit" name="next" value="$lt{'done'}" />
     <input type="submit" name="stop" value="$lt{'stop'}" />      <input type="submit" name="stop" value="$lt{'stop'}" />
   INFO
       }
       $result.=<<INFO;
     <input type="button" name="fail" value="$lt{'fail'}"       <input type="button" name="fail" value="$lt{'fail'}" 
            onclick="javascript:onFailRest()" />             onclick="javascript:onFailRest()" />
   </div>    </div>
   $file_list    $file_list
 INFO  INFO
     return $result;      return $result;
   
 }  }
   
 sub done_screen {  sub done_screen {
     my ($version) = @_;      my ($version) = @_;
     my $title=&Apache::lonnet::gettitle();      my $title=&Apache::lonnet::gettitle($env{'request.uri'});
     my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'});      my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'});
     my (undef,undef,$domain,$user)= &Apache::lonnet::whichuser();      my (undef,undef,$domain,$user)= &Apache::lonnet::whichuser();
     my $files = '<ul>';      my $files = '<ul>';
Line 620  sub start_Task { Line 629  sub start_Task {
     }      }
  }   }
     }      }
     if ($target eq 'web' && $env{'request.state'} eq 'construct') {      if ($target =~/(web|webgrade)/ && $env{'request.state'} eq 'construct') {
  $form_tag_start.=&Apache::structuretags::problem_web_to_edit_header($env{'form.rndseed'});   $form_tag_start.=&Apache::structuretags::problem_web_to_edit_header($env{'form.rndseed'});
     }      }
     if ($target eq 'web'       if ($target eq 'web' 
Line 724  sub start_Task { Line 733  sub start_Task {
  if ($todo) {   if ($todo) {
     &setup_env_for_other_user($todo,$safeeval);      &setup_env_for_other_user($todo,$safeeval);
     my ($symb,$uname,$udom)=&decode_queue_key($todo);      my ($symb,$uname,$udom)=&decode_queue_key($todo);
     $result.="\n".'<table><tr><td>Found '.      if ($env{'request.state'} eq 'construct') {
  &Apache::lonnet::gettitle($symb).' for '.$uname.' at '.$udom.'</td></tr></table>';   $symb = $env{'request.uri'};
       }
       $result.="\n".'<p>'.
    &mt('Grading [_1] for [_2] at [_3]',
       &Apache::lonnet::gettitle($symb),$uname,$udom).'</p>';
     $form_tag_start.=      $form_tag_start.=
  '<input type="hidden" name="gradingkey" value="'.   '<input type="hidden" name="gradingkey" value="'.
  &escape($todo).'" />';   &escape($todo).'" />';
Line 800  sub start_Task { Line 813  sub start_Task {
  }   }
     }      }
     if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); }      if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); }
    } elsif ($target eq 'webgrade' 
    && $env{'request.state'} eq 'construct') {
       $result.=$form_tag_start;
       $result.='<input type="hidden" name="webgrade" value="'.
    $webgrade.'" />';
       $result.=&webgrade_standard_info();
  }   }
  if ($target eq 'webgrade') {   if ($target eq 'webgrade') {
     $result.="\n".'<div id="LC_GRADING_criterialist">';      $result.="\n".'<div id="LC_GRADING_criterialist">';
Line 847  sub get_key_todo { Line 866  sub get_key_todo {
     my ($target)=@_;      my ($target)=@_;
     my $todo;      my $todo;
   
       if ($env{'request.state'} eq 'construct') {
    my ($symb,$cid,$udom,$uname) = &Apache::lonnet::whichuser();
    my $gradingkey=&encode_queue_key($symb,$udom,$uname);
    return ($gradingkey);
       }
   
     if (defined($env{'form.reviewasubmission'})) {      if (defined($env{'form.reviewasubmission'})) {
  &Apache::lonxml::debug("review a submission....");   &Apache::lonxml::debug("review a submission....");
  $env{'form.queue'}='reviewqueue';   $env{'form.queue'}='reviewqueue';
Line 1039  sub end_Task { Line 1064  sub end_Task {
  }   }
  if (!$previous && $status ne 'SHOW_ANSWER' &&   if (!$previous && $status ne 'SHOW_ANSWER' &&
     &show_task($status,$previous)) {      &show_task($status,$previous)) {
     $result.=&Apache::inputtags::gradestatus('0');      $result.=&Apache::inputtags::gradestatus('0',$target,1);
  }   }
   
  $result.='</form>';   $result.='</form>';
Line 1057  DONEBUTTON Line 1082  DONEBUTTON
  if (&show_task($status,$previous) &&   if (&show_task($status,$previous) &&
     $Apache::lonhomework::history{"resource.$version.0.status"} =~ /^(pass|fail)$/) {      $Apache::lonhomework::history{"resource.$version.0.status"} =~ /^(pass|fail)$/) {
     my $bt_status=$Apache::lonhomework::history{"resource.$version.0.status"};      my $bt_status=$Apache::lonhomework::history{"resource.$version.0.status"};
     my $title=&Apache::lonnet::gettitle();      my $title=&Apache::lonnet::gettitle($env{'request.uri'});
   
     my $start_time;      my $start_time;
   
     my $slot_name=      my $slot_name=
Line 1332  DONEBUTTON Line 1356  DONEBUTTON
  $result.=&Apache::response::meta_stores_write('status','string',   $result.=&Apache::response::meta_stores_write('status','string',
       'Bridge Task Status');        'Bridge Task Status');
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  &Apache::structuretags::reset_problem_globals('Task');   $result.= &Apache::structuretags::problem_edit_footer();
  undef($Apache::lonhomework::parsing_a_task);  
  return ('','no');  
     }      }
     &Apache::structuretags::reset_problem_globals('Task');      &Apache::structuretags::reset_problem_globals('Task');
     undef($Apache::lonhomework::parsing_a_task);      undef($Apache::lonhomework::parsing_a_task);
Line 2078  sub start_ClosingParagraph { Line 2100  sub start_ClosingParagraph {
     } elsif ($target eq 'webgrade') {      } elsif ($target eq 'webgrade') {
  &Apache::lonxml::startredirection();   &Apache::lonxml::startredirection();
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  my $bodytext=&Apache::lonxml::get_all_text("/closingparagraph",  
    $parser);  
  $result = &Apache::edit::tag_start($target,$token);   $result = &Apache::edit::tag_start($target,$token);
  $result.= &Apache::edit::editfield($token->[1],$bodytext,'',80,4);  
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  $result = $token->[4].&Apache::edit::modifiedfield('/closingparagraph',  
    $parser);  
     }      }
     return $result;      return $result;
 }  }
Line 2099  sub end_ClosingParagraph { Line 2116  sub end_ClosingParagraph {
     return $result;      return $result;
 }  }
   
   sub insert_ClosingParagraph {
       return '
   <ClosingParagraph>
       <startouttext />
       <endouttext />
   </ClosingParagraph>';
   }
   
 sub get_dim_id {  sub get_dim_id {
     if (@Apache::bridgetask::dimension) {      if (@Apache::bridgetask::dimension) {
  return $Apache::bridgetask::dimension[-1];   return $Apache::bridgetask::dimension[-1];
Line 2225  sub start_QuestionText { Line 2250  sub start_QuestionText {
     my $dim = &get_dim_id();      my $dim = &get_dim_id();
  $dimension{$dim}{'questiontext'}=$text;   $dimension{$dim}{'questiontext'}=$text;
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  my $bodytext=&Apache::lonxml::get_all_text("/questiontext",$parser);  
  $result = &Apache::edit::tag_start($target,$token);   $result = &Apache::edit::tag_start($target,$token);
  $result.= &Apache::edit::editfield($token->[1],$bodytext,'',80,4);  
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  $result = $token->[4].&Apache::edit::modifiedfield('/questiontext',  
    $parser);  
     }      }
     return $result;      return $result;
 }  }
Line 2239  sub end_QuestionText { Line 2260  sub end_QuestionText {
     return '';      return '';
 }  }
   
   sub insert_QuestionText {
       return '
   <QuestionText>
       <startouttext />
       <endouttext />
   </QuestionText>';
   }
   
 sub get_instance {  sub get_instance {
     my ($dim)=@_;      my ($dim)=@_;
     my $rand_alg=&Apache::lonnet::get_rand_alg();      my $rand_alg=&Apache::lonnet::get_rand_alg();
Line 2707  sub start_IntroParagraph { Line 2736  sub start_IntroParagraph {
  }   }
   
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  my $bodytext=&Apache::lonxml::get_all_text("/introparagraph",$parser);  
  $result = &Apache::edit::tag_start($target,$token);   $result = &Apache::edit::tag_start($target,$token);
  $result.= &Apache::edit::editfield($token->[1],$bodytext,'',80,4);  
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  $result = $token->[4].&Apache::edit::modifiedfield('/introparagraph',  
    $parser);  
     }      }
     return $result;      return $result;
 }  }
Line 2724  sub end_IntroParagraph { Line 2749  sub end_IntroParagraph {
     }      }
 }  }
   
   sub insert_IntroParagraph {
       return '
   <IntroParagraph>
       <startouttext />
       <endouttext />
   </IntroParagraph>';
   }
   
 sub start_Instance {  sub start_Instance {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $dim = &get_dim_id();      my $dim = &get_dim_id();
Line 2780  sub start_InstanceText { Line 2813  sub start_InstanceText {
  my $instance_id=$Apache::bridgetask::instance{$dim}[-1];   my $instance_id=$Apache::bridgetask::instance{$dim}[-1];
  $dimension{$dim}{$instance_id.'.text'}=$text;   $dimension{$dim}{$instance_id.'.text'}=$text;
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  my $bodytext=&Apache::lonxml::get_all_text("/instancetext",$parser);  
  $result = &Apache::edit::tag_start($target,$token);   $result = &Apache::edit::tag_start($target,$token);
  $result.= &Apache::edit::editfield($token->[1],$bodytext,'',80,4);  
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  $result = $token->[4].&Apache::edit::modifiedfield('/instancetext',  
    $parser);  
     }      }
     return $result;      return $result;
 }  }
Line 2794  sub end_InstanceText { Line 2823  sub end_InstanceText {
     return '';      return '';
 }  }
   
   sub insert_InstanceText {
       return '
   <InstanceText>
       <startouttext />
       <endouttext />
   </InstanceText>';
   }
   
 sub start_Criteria {  sub start_Criteria {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result = '';      my $result = '';
Line 2826  sub start_Criteria { Line 2863  sub start_Criteria {
     push(@{$dimension{$dim}{'criterias'}},$id);      push(@{$dimension{$dim}{'criterias'}},$id);
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  if (0) {  
     $result = &Apache::edit::tag_start($target,$token);  
     my $text=&Apache::lonxml::get_all_text("/criteria",$parser);  
     &Apache::lonnet::logthis("get_all_text criteria \n$text");  
     my $local_parser = HTML::LCParser->new(\$text);  
     $local_parser->xml_mode(1);  
     $local_parser->marked_sections(1);  
     while (1) {  
  my $criteria_text =   
     &Apache::lonxml::get_all_text('gradernote',$local_parser);  
  $result.=  
     &Apache::edit::editfield($token->[1],$criteria_text,'',80,4);  
   
  # check for a <GraderNote> next might be end  
  my $token = $local_parser->get_token();  
  # is the end  
  last if (!$token);  
  my $gradernote = &Apache::lonxml::get_all_text('/gradernote',  
        $local_parser);  
  # purge the end tag  
  my $token = $local_parser->get_token();  
  $gradernote = '<GraderNote>'.$gradernote.'</GraderNote>';  
  @Apache::scripttag::parser_env = @_;  
  $result .=   
     &Apache::edit::end_row().&Apache::edit::start_spanning_row().  
     &Apache::scripttag::xmlparse($gradernote).  
     &Apache::edit::end_row().&Apache::edit::start_spanning_row();  
     }  
  }  
  $result .=&Apache::edit::tag_start($target,$token);   $result .=&Apache::edit::tag_start($target,$token);
  $result.=     $result.=  
     &Apache::edit::text_arg('Id:','id',$token,10).' '.      &Apache::edit::text_arg('Id:','id',$token,10).' '.
Line 2960  sub end_Criteria { Line 2968  sub end_Criteria {
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
     }      }
 }  }
   sub insert_Criteria {
       return '
   <Criteria>
       <CriteriaText>
           <startouttext />
           <endouttext />
       </CriteriaText>
   </Criteria>';
   }
   
 sub start_CriteriaText {  sub start_CriteriaText {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
Line 2967  sub start_CriteriaText { Line 2984  sub start_CriteriaText {
     if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {      if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {
   
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  my $bodytext=&Apache::lonxml::get_all_text("/criteriatext",$parser);  
  $result = &Apache::edit::tag_start($target,$token);   $result = &Apache::edit::tag_start($target,$token);
  $result.= &Apache::edit::editfield($token->[1],$bodytext,'',80,4);  
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  $result = $token->[4].&Apache::edit::modifiedfield('/criteriatext',  
    $parser);  
     }      }
     return $result;      return $result;
 }  }
Line 2981  sub end_CriteriaText { Line 2994  sub end_CriteriaText {
     return '';      return '';
 }  }
   
   sub insert_CriteriaText {
       return '
   <CriteriaText>
       <startouttext />
       <endouttext />
   </CriteriaText>';
   }
   
 sub start_GraderNote {  sub start_GraderNote {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
Line 2988  sub start_GraderNote { Line 3009  sub start_GraderNote {
  $result = '<div class="LC_GRADING_gradernote"><b>'.   $result = '<div class="LC_GRADING_gradernote"><b>'.
     &mt('Note to graders:').'</b>';      &mt('Note to graders:').'</b>';
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  my $bodytext=&Apache::lonxml::get_all_text("/gradernote",$parser);  
  $result = &Apache::edit::tag_start($target,$token);   $result = &Apache::edit::tag_start($target,$token);
  $result.= &Apache::edit::editfield($token->[1],$bodytext,'',80,4);  
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  $result = $token->[4].&Apache::edit::modifiedfield('/gradernote',  
    $parser);  
     } elsif ($target eq 'web' || $target eq 'grade') {      } elsif ($target eq 'web' || $target eq 'grade') {
  my $note=&Apache::lonxml::get_all_text('/gradernote',$parser,$style);    my $note=&Apache::lonxml::get_all_text('/gradernote',$parser,$style); 
     }      }
Line 3009  sub end_GraderNote { Line 3026  sub end_GraderNote {
     return;      return;
 }  }
   
   sub insert_GraderNote {
       return '
   <GraderNote>
       <startouttext />
       <endouttext />
   </GraderNote>';
   }
   
   
 sub proctor_validation_screen {  sub proctor_validation_screen {
     my ($slot) = @_;      my ($slot) = @_;
     my (undef,undef,$domain,$user) = &Apache::lonnet::whichuser();      my (undef,undef,$domain,$user) = &Apache::lonnet::whichuser();
     my $url=&Apache::lonnet::studentphoto($domain,$user,'jpg');      my $url=&Apache::lonnet::studentphoto($domain,$user,'jpg');
       if ($url ne '/adm/lonKaputt/lonlogo_broken.gif') {
    $url = "<tr><td colspan=\"2\"><img src=\"$url\" /></td></tr>";
       } else {
    undef($url);
       }
   
     my $name=&Apache::loncommon::plainname($user,$domain);      my $name=&Apache::loncommon::plainname($user,$domain);
           
     my $msg;      my $msg;
     if ($env{'form.proctorpassword'}) {      if ($env{'form.proctorpassword'}) {
  $msg='<p><font color="red">'.&mt("Failed to authenticate the proctor.")   $msg.='<p><span class="LC_warning">'
     .'</font></p>';      .&mt("Failed to authenticate the proctor.")
       .'</span></p>';
       }
   
       my $valid;
       my @possible_proctors=split(",",$slot->{'proctor'});
       foreach my $proctor (@possible_proctors) {
    if ($proctor =~ /$LONCAPA::username_re:$LONCAPA::domain_re/) {
       $valid = 1;
       last;
    }
     }      }
       if (!$valid) {
    $msg.='<p><span class="LC_error">'
       .&mt("No valid poctors are defined.")
       .'</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'});
       $uri = &HTML::Entities::encode($uri,'<>&"');
     my $result= (<<ENDCHECKOUT);      my $result= (<<ENDCHECKOUT);
 <h2>Proctor Validation</h2>  <h2>Proctor Validation</h2>
     <p>Your room's proctor needs to validate your access to this resource.</p>      <p>Your room's proctor needs to validate your access to this resource.</p>
     $msg      $msg
 <form name="checkout" method="post" action="$env{'request.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>
Line 3043  sub proctor_validation_screen { Line 3091  sub proctor_validation_screen {
       <tr><td>Name:</td><td>$name</td></tr>        <tr><td>Name:</td><td>$name</td></tr>
       <tr><td>Student ID:</td><td>$env{'environment.id'}</td></tr>        <tr><td>Student ID:</td><td>$env{'environment.id'}</td></tr>
       <tr><td>Usename</td><td>$user:$domain</td></tr>        <tr><td>Usename</td><td>$user:$domain</td></tr>
       <tr><td colspan="2"><img src="$url" /></td></tr>        $url
     </table>      </table>
   </tr></td>    </tr></td>
 </table>  </table>

Removed from v.1.226  
changed lines
  Added in v.1.232


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