version 1.62, 2005/10/01 04:06:29
|
version 1.73, 2005/10/24 18:40:21
|
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 294 sub show_task {
|
Line 304 sub show_task {
|
( $status eq 'INVALID_ACCESS') )) { |
( $status eq 'INVALID_ACCESS') )) { |
return 0; |
return 0; |
} |
} |
|
if ($env{'form.donescreen'}) { return 0; } |
return 1; |
return 1; |
} |
} |
|
|
Line 316 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 334 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); |
} |
} |
Line 392 sub start_Task {
|
Line 433 sub start_Task {
|
'</h1>'.&proctor_validation_screen($slot); |
'</h1>'.&proctor_validation_screen($slot); |
} elsif ($status eq 'WAITING_FOR_GRADE') { |
} elsif ($status eq 'WAITING_FOR_GRADE') { |
$msg.='<h1>'.&mt('Your submission is in the grading queue.').'</h1>'; |
$msg.='<h1>'.&mt('Your submission is in the grading queue.').'</h1>'; |
|
} elsif ($env{'form.donescreen'}) { |
|
my $title=&Apache::lonnet::gettitle(); |
|
my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}); |
|
my $files='<ul><li>'.join('</li><li>',@files).'</li></ul>'; |
|
$result.=<<DONESCREEN; |
|
<h2>$title</h2> |
|
<p> Files submitted: $files </p> |
|
<p> You are now done with this Bridge Task </p> |
|
<hr /> |
|
<p> <a href="/adm/logout">Logout</a> </p> |
|
<p> <a href="/adm/roles">Change to a different course</a> </p> |
|
DONESCREEN |
} elsif ($status ne 'NOT_YET_VIEWED') { |
} elsif ($status ne 'NOT_YET_VIEWED') { |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
} |
} |
Line 498 sub start_Task {
|
Line 551 sub start_Task {
|
value="'.$sec.'" />'; |
value="'.$sec.'" />'; |
} |
} |
} |
} |
|
if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } |
} |
} |
} 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 |
Line 605 sub end_Task {
|
Line 659 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(); |
} |
} |
if ($status eq 'CAN_ANSWER' && !$previous) { |
if ($status eq 'CAN_ANSWER' && !$previous && |
|
!$env{'form.donescreen'}) { |
$result.="\n".'<table border="1">'. |
$result.="\n".'<table border="1">'. |
&Apache::inputtags::file_selector("$version.0", |
&Apache::inputtags::file_selector("$version.0", |
"bridgetask","*", |
"bridgetask","*", |
Line 623 sub end_Task {
|
Line 675 sub end_Task {
|
<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>"; |
$result.=&Apache::inputtags::gradestatus('0'); |
$result.=&Apache::inputtags::gradestatus('0'); |
|
$result.='</form>'; |
|
$result.=<<DONEBUTTON; |
|
<form method="POST"> |
|
<input type="hidden" name="donescreen" value="1" /> |
|
<input type="submit" value="Done" /> |
|
</form> |
|
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)$/) { |
Line 688 sub end_Task {
|
Line 747 sub end_Task {
|
$award; |
$award; |
$Apache::lonhomework::results{"resource.0.submission"}= |
$Apache::lonhomework::results{"resource.0.submission"}= |
$Apache::lonhomework::results{"resource.$version.0.submission"}=''; |
$Apache::lonhomework::results{"resource.$version.0.submission"}=''; |
|
} else { |
|
delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}); |
} |
} |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
Line 804 sub end_Task {
|
Line 865 sub end_Task {
|
# &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.=&meta_stores_write('solved','string','Problem Status'); |
#$result.=&Apache::response::meta_response_order(); |
$result.=&meta_stores_write('tries','int_zeropos', |
|
'Number of Attempts'); |
|
$result.=&meta_stores_write('awarded','float', |
|
'Partial Credit Factor'); |
|
$result.=&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 928 sub show_queue {
|
Line 994 sub show_queue {
|
&Apache::grades::init_perm(); |
&Apache::grades::init_perm(); |
my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); |
my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); |
&Apache::grades::reset_perm(); |
&Apache::grades::reset_perm(); |
|
if (!(grep(/^all$/,@chosen_sections))) { |
|
$result.='<p> Showing only sections <tt>'.join(', ',@chosen_sections). |
|
'</tt>.</p> '."\n"; |
|
} |
|
|
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); |
Line 1062 sub queue_key_locked {
|
Line 1132 sub queue_key_locked {
|
sub pick_from_queue_data { |
sub pick_from_queue_data { |
my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_; |
my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_; |
foreach my $key (keys(%$queuedata)) { |
foreach my $key (keys(%$queuedata)) { |
|
if ($key =~ /\0locked$/) { next; } |
|
if ($key =~ /\0timestamp$/) { next; } |
my ($symb,$uname,$udom)=&decode_queue_key($key); |
my ($symb,$uname,$udom)=&decode_queue_key($key); |
if ($check_section) { |
if ($check_section) { |
my $section=&Apache::lonnet::getsection($uname,$udom); |
my $section=&Apache::lonnet::getsection($uname,$udom); |
Line 1187 sub get_from_queue {
|
Line 1259 sub get_from_queue {
|
|
|
sub select_user { |
sub select_user { |
my ($symb,$cid)=&Apache::lonxml::whichuser(); |
my ($symb,$cid)=&Apache::lonxml::whichuser(); |
my $result.='<table border="1">'; |
|
|
|
my @chosen_sections= |
my @chosen_sections= |
&Apache::loncommon::get_env_multiple('form.chosensections'); |
&Apache::loncommon::get_env_multiple('form.chosensections'); |
&Apache::grades::init_perm(); |
&Apache::grades::init_perm(); |
my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); |
my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); |
&Apache::grades::reset_perm(); |
&Apache::grades::reset_perm(); |
|
|
|
my $result; |
|
if (!(grep(/^all$/,@chosen_sections))) { |
|
$result.='<p> Showing only sections <tt>'.join(', ',@chosen_sections). |
|
'</tt>.</p> '."\n"; |
|
} |
|
$result.='<table border="1">'; |
|
|
foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { |
foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { |
my ($uname,$udom) = split(/:/,$student); |
my ($uname,$udom) = split(/:/,$student); |
Line 1370 sub get_instance {
|
Line 1448 sub get_instance {
|
$dim_info.='<h3>Question : you did not pass this '.$mandatory.' question</h3>'; |
$dim_info.='<h3>Question : you did not pass this '.$mandatory.' question</h3>'; |
} |
} |
my $man_count=0; |
my $man_count=0; |
|
my $man_passed=0; |
my $opt_count=0; |
my $opt_count=0; |
my $opt_passed=0; |
my $opt_passed=0; |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
Line 1381 sub get_instance {
|
Line 1460 sub get_instance {
|
} |
} |
} else { |
} else { |
$man_count++; |
$man_count++; |
|
if ($Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"} eq 'pass') { |
|
$man_passed++; |
|
} |
} |
} |
} |
} |
my $opt_req=&Apache::lonxml::get_param('OptionalRequired', |
if ($man_passed eq $man_count) { $man_passed='all'; } |
$parstack,$safeeval); |
my $opt_req=$dimension{$instance.'.optionalrequired'}; |
if ($opt_req !~ /\S/) { $opt_req='0'; } |
if ($opt_req !~ /\S/) { $opt_req='0'; } |
$dim_info.="\n<p>".&mt('You passed all of the mandatory components and [_1] of the [_2] optional components, of which you were required to pass [_3].',$opt_passed,$opt_count,$opt_req)."</p>\n</div>"; |
$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); |
my $internal_location=&internal_location($dim); |
$result=~s/\Q$internal_location\E/$dim_info/; |
$result=~s/\Q$internal_location\E/$dim_info/; |
Line 1449 sub get_instance {
|
Line 1531 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 1506 sub get_instance {
|
Line 1572 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; |
} |
} |