version 1.237, 2007/08/09 00:59:16
|
version 1.257, 2010/12/31 02:40:14
|
Line 37 use Apache::lonmenu;
|
Line 37 use Apache::lonmenu;
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::slotrequest(); |
use Apache::slotrequest(); |
|
use Apache::structuretags(); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use LONCAPA; |
use LONCAPA; |
|
|
Line 82 sub proctor_check_auth {
|
Line 83 sub proctor_check_auth {
|
} |
} |
} |
} |
if ($authenticated) { |
if ($authenticated) { |
&check_in($type,$user,$domain,$slot_name); |
my $check = &check_in($type,$user,$domain,$slot_name); |
|
if ($check =~ /^error:/) { |
|
return 0; |
|
} |
return 1; |
return 1; |
} |
} |
} |
} |
Line 94 sub check_in {
|
Line 98 sub check_in {
|
my ($type,$user,$domain,$slot_name) = @_; |
my ($type,$user,$domain,$slot_name) = @_; |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots"); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots"); |
if ( $useslots eq 'map_map') { |
if ( $useslots eq 'map_map') { |
&check_in_sequence($user,$domain,$slot_name); |
my $result = &check_in_sequence($user,$domain,$slot_name); |
|
if ($result =~ /^error: /) { |
|
return $result; |
|
} |
} else { |
} else { |
&create_new_version($type,$user,$domain,$slot_name); |
&create_new_version($type,$user,$domain,$slot_name); |
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
Line 105 sub check_in {
|
Line 112 sub check_in {
|
sub check_in_sequence { |
sub check_in_sequence { |
my ($user,$domain,$slot_name) = @_; |
my ($user,$domain,$slot_name) = @_; |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (!defined($navmap)) { |
|
return 'error: '; |
|
} |
my ($symb) = &Apache::lonnet::whichuser(); |
my ($symb) = &Apache::lonnet::whichuser(); |
my ($map) = &Apache::lonnet::decode_symb($symb); |
my ($map) = &Apache::lonnet::decode_symb($symb); |
my @resources = |
my @resources = |
Line 252 sub add_grading_button {
|
Line 262 sub add_grading_button {
|
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>'; |
if ($see_all || (!§ion_restricted())) { |
if ($see_all || (!§ion_restricted())) { |
$result.="\n\t\t\t".'<td rowspan="4">Specify a section: </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>'; |
"\n\t\t\t".'<td rowspan="4">'.$sec_select."\n\t\t\t".'</td>'; |
} else { |
} else { |
$result.="\n\t\t\t".'<td rowspan="4">Grading section: </td>'. |
$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>'; |
"\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="'. |
Line 294 sub add_grading_button {
|
Line 304 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 306 sub add_request_another_attempt_button {
|
Line 316 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 322 STUFF
|
Line 333 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 370 sub show_task {
|
Line 381 sub show_task {
|
( $status eq 'BANNED') || |
( $status eq 'BANNED') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'NOT_IN_A_SLOT') || |
( $status eq 'NOT_IN_A_SLOT') || |
|
( $status eq 'NOT_YET_VIEWED') || |
( $status eq 'NEEDS_CHECKIN') || |
( $status eq 'NEEDS_CHECKIN') || |
( $status eq 'WAITING_FOR_GRADE') || |
( $status eq 'WAITING_FOR_GRADE') || |
( $status eq 'INVALID_ACCESS') || |
( $status eq 'INVALID_ACCESS') || |
Line 472 sub file_list {
|
Line 484 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 492 sub webgrade_standard_info {
|
Line 504 sub webgrade_standard_info {
|
|
|
my $file_list = &file_list($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}); |
my $file_list = &file_list($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}); |
|
|
my %lt=('done' => 'Next Item', |
my %lt = &Apache::lonlocal::texthash( |
'stop' => 'Quit Grading', |
'done' => 'Next Item', |
'fail' => 'Fail Rest', |
'stop' => 'Quit Grading', |
'cancel' => 'Cancel', |
'fail' => 'Fail Rest', |
'submit' => 'Submit Grades', |
'cancel' => 'Cancel', |
); |
'submit' => 'Submit Grades', |
%lt=&Apache::lonlocal::texthash(%lt); |
); |
|
|
my $result=<<INFO; |
my $result=<<INFO; |
<div class="LC_GRADING_maincontrols"> |
<div class="LC_GRADING_maincontrols"> |
Line 535 sub done_screen {
|
Line 547 sub done_screen {
|
my $title=&Apache::lonnet::gettitle($env{'request.uri'}); |
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 ($msg,$files,$shown); |
my $msg; |
if (@files > 0) { |
foreach my $file (@files) { |
$files = '<ul>'; |
my $url="/uploaded/$domain/$user/portfolio$file"; |
foreach my $file (@files) { |
if (! &Apache::lonnet::stat_file($url)) { |
my $url="/uploaded/$domain/$user/portfolio$file"; |
$file = &mt('<span class="LC_error"> Nonexistent file:</span> '. |
if (! &Apache::lonnet::stat_file($url)) { |
'<span class="LC_filename">[_1]</span>',$file); |
$file = '<span class="LC_error">' |
$msg .= "<p>Submitted non-existant file $file</p>\n"; |
.&mt('[_1]Nonexistent file:[_2]' |
} else { |
,'<span class="LC_error"> ' |
$file = '<span class="LC_filename">'.$file.'</span>'; |
,'</span> <span class="LC_filename">'.$file.'</span>'); |
$msg .= "<p>Submitted file $file</p>\n"; |
$msg .= "<p>".&mt('Submitted non-existent file [_1]',$file)."</p>\n"; |
} |
} else { |
$files .= '<li>'.$file.'</li>'; |
$file = '<span class="LC_filename">'.$file.'</span>'; |
|
$msg .= "<p>".&mt('Submitted file [_1]',$file)."</p>\n"; |
|
} |
|
$files .= '<li>'.$file.'</li>'; |
|
} |
|
$files.='</ul>'; |
|
$shown = '<p>'.&mt('Files submitted: [_1]',$files).'</p>' |
|
.'<p>'.&mt('You are now done with this Bridge Task').'</p>' |
|
.'<hr />' |
|
.'<p><a href="/adm/logout">'.&mt('Logout').'</a></p>' |
|
.'<p><a href="/adm/roles">'.&mt('Change to a different course').'</a></p>'; |
|
} else { |
|
$msg = &mt("Submission status: no files currently submitted, when 'Done' was indicated."); |
|
$shown = '<p class="LC_error">'. |
|
&mt('You did not submit any files. Please try again.').'</span>'. |
|
'</p><p><a href="javascript:history.go(-1);">'.&mt('Back to Bridge Task').'</a></p><hr />'; |
} |
} |
$files.='</ul>'; |
my $subject = &mt('Submission message for [_1]',$title); |
my $subject = "Submission message for $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 569 sub done_screen {
|
Line 595 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; |
|
<h2>$title</h2> |
return "<h2>$title</h2>" |
<p> Files submitted: $files </p> |
.$shown |
<p> You are now done with this Bridge Task </p> |
.$message_status |
<hr /> |
.$comment_status; |
<p> <a href="/adm/logout">Logout</a> </p> |
|
<p> <a href="/adm/roles">Change to a different course</a> </p> |
|
$message_status |
|
$comment_status |
|
DONESCREEN |
|
|
|
} |
} |
|
|
sub start_Task { |
sub start_Task { |
Line 609 sub start_Task {
|
Line 629 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)); |
|
|
|
} |
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
|
$target eq 'tex') { |
|
if ($env{'form.markaccess'}) { |
|
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
|
&Apache::lonnet::set_first_access($interval[1]); |
|
} |
} |
} |
|
|
if ($target eq 'web' && $env{'request.state'} ne 'construct') { |
if ($target eq 'web' && $env{'request.state'} ne 'construct') { |
Line 630 sub start_Task {
|
Line 658 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'}); |
if (§ion_restricted()) { |
if (!§ion_restricted()) { |
$result.='<form method="post" name="gradingstatus" action="/adm/statistics">'. |
$result.='<form method="post" name="gradingstatus" action="/adm/statistics">'. |
'<input type="hidden" name="problemchoice" value="'.$target_id.'" />'. |
'<input type="hidden" name="problemchoice" value="'.$target_id.'" />'. |
'<input type="hidden" name="reportSelected" value="grading_analysis" />'. |
'<input type="hidden" name="reportSelected" value="grading_analysis" />'. |
Line 651 sub start_Task {
|
Line 679 sub start_Task {
|
my ($version,$previous)=&get_version(); |
my ($version,$previous)=&get_version(); |
($status,$accessmsg,my $slot_name,$slot) = |
($status,$accessmsg,my $slot_name,$slot) = |
&Apache::lonhomework::check_slot_access('0','Task'); |
&Apache::lonhomework::check_slot_access('0','Task'); |
if ($status eq 'CAN_ANSWER' && $version eq '') { |
if ((($status eq 'CAN_ANSWER') || ($status eq 'NOT_YET_VIEWED')) && ($version eq '')) { |
# CAN_ANSWER mode, and no current version, unproctored access |
# CAN_ANSWER or NOT_YET_VIEWED mode, and no current version, unproctored access |
# thus self-checkedin |
# thus self-checkedin |
&check_in('Task',undef,undef,$slot_name); |
my $check = &check_in('Task',undef,undef,$slot_name); |
|
if ($check =~ /^error: /) { |
|
my $symb=&Apache::lonnet::symbread(); |
|
&Apache::lonnet::logthis("Error during self-checkin of version $version of Task (symb: $symb) using slot: $slot_name"); |
|
} |
&add_to_queue('gradingqueue',{'type' => 'Task', |
&add_to_queue('gradingqueue',{'type' => 'Task', |
'time' => time, |
'time' => time, |
'slot' => $slot_name}); |
'slot' => $slot_name}); |
Line 684 sub start_Task {
|
Line 716 sub start_Task {
|
$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>'; |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
$msg.='<h1>'.&mt('You are not currently signed up to work at this time and/or place.').'</h1>'; |
$msg.='<h1>'.&mt('You are not currently signed up to work at this time and/or place.').'</h1>'; |
$msg.=&add_request_another_attempt_button("Sign up for time to work."); |
$msg.=&add_request_another_attempt_button("Sign up for time to work"); |
} elsif ($status eq 'NEEDS_CHECKIN') { |
} elsif ($status eq 'NEEDS_CHECKIN') { |
$msg.='<h1>'.&mt('You need the Proctor to validate you.'). |
$msg.='<h1>'.&mt('You need the Proctor to validate you.'). |
'</h1>'.&proctor_validation_screen($slot); |
'</h1>'.&proctor_validation_screen($slot); |
Line 692 sub start_Task {
|
Line 724 sub start_Task {
|
$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'}) { |
} elsif ($env{'form.donescreen'}) { |
$result .= &done_screen($version); |
$result .= &done_screen($version); |
} elsif ($status ne 'NOT_YET_VIEWED') { |
} elsif ($status eq 'NOT_YET_VIEWED') { |
|
my $symb=&Apache::lonnet::symbread(); |
|
$msg.=&Apache::structuretags::firstaccess_msg($accessmsg,$symb); |
|
} else { |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
} |
} |
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
Line 700 sub start_Task {
|
Line 735 sub start_Task {
|
} |
} |
$result.=$msg.'<br />'; |
$result.=$msg.'<br />'; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result.='\begin{document}\noindent \vskip 1 mm \begin{minipage}{\textwidth}\vskip 0 mm'; |
$result.='\noindent \vskip 1 mm \begin{minipage}{\textwidth}\vskip 0 mm'; |
if ($status eq 'UNAVAILABLE') { |
if ($status eq 'UNAVAILABLE') { |
$result.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'\vskip 0 mm '; |
$result.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'\vskip 0 mm '; |
} else { |
} else { |
Line 770 sub start_Task {
|
Line 805 sub start_Task {
|
$result.='<b>'.&mt("Stopped grading.").'</b>'.$back; |
$result.='<b>'.&mt("Stopped grading.").'</b>'.$back; |
} elsif ($status_code eq 'cancel') { |
} elsif ($status_code eq 'cancel') { |
$result.='<b>'.&mt("Cancelled grading.").'</b>'.$back; |
$result.='<b>'.&mt("Cancelled grading.").'</b>'.$back; |
|
} elsif ($status_code eq 'terminated') { |
|
$result.= '<b>'.&mt('Terminated grading').'</b><br />'. |
|
'<span class="LC_error">'. |
|
&mt('Grading for [_1] has not been saved because of a grading key mismatch.', |
|
'<tt>'.$env{'form.terminated'}.'</tt>').'</span><br />'.$back; |
} elsif ($status_code eq 'never_versioned') { |
} elsif ($status_code eq 'never_versioned') { |
$result.='<b>'. |
$result.='<b>'. |
&mt("Requested user has never accessed the task."). |
&mt("Requested user has never accessed the task."). |
Line 990 sub get_key_todo {
|
Line 1030 sub get_key_todo {
|
return (undef,'stop'); |
return (undef,'stop'); |
} elsif ($env{'form.cancel'}) { |
} elsif ($env{'form.cancel'}) { |
return (undef,'cancel'); |
return (undef,'cancel'); |
|
} elsif ($env{'form.terminated'}) { |
|
return (undef, 'terminated'); |
} elsif ($env{'form.next'}) { |
} elsif ($env{'form.next'}) { |
return (undef,'select_user'); |
return (undef,'select_user'); |
} |
} |
Line 1035 sub get_key_todo {
|
Line 1077 sub get_key_todo {
|
|
|
if ($env{'form.queuemode'} ne 'selected') { |
if ($env{'form.queuemode'} ne 'selected') { |
# don't get something new from the queue if they hit the stop button |
# don't get something new from the queue if they hit the stop button |
if (!(($env{'form.cancel'} || $env{'form.stop'}) |
if (!(($env{'form.cancel'} || $env{'form.stop'} || $env{'form.terminated'}) |
&& $target eq 'webgrade') |
&& $target eq 'webgrade') |
&& !$env{'form.gradingaction'}) { |
&& !$env{'form.gradingaction'}) { |
&Apache::lonxml::debug("Getting anew $queue"); |
&Apache::lonxml::debug("Getting anew $queue"); |
return (&get_from_queue($queue)); |
return (&get_from_queue($queue)); |
} else { |
} else { |
return (undef,'stop'); |
if ($env{'form.terminated'}) { |
|
return (undef,'terminated'); |
|
} else { |
|
return (undef,'stop'); |
|
} |
} |
} |
} |
} |
return (undef,undef) |
return (undef,undef) |
Line 1071 sub end_Task {
|
Line 1117 sub end_Task {
|
} |
} |
if ($status eq 'CAN_ANSWER' && !$previous && |
if ($status eq 'CAN_ANSWER' && !$previous && |
!$env{'form.donescreen'}) { |
!$env{'form.donescreen'}) { |
$result.="\n".'<table border="1">'. |
my ($portheader,$porttext); |
|
if ($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}) { |
|
$portheader = &mt('Submit Additional Portfolio Files for Grading'); |
|
$porttext = &mt('Indicate which additional files from your portfolio are to be evaluated in grading this task.'); |
|
} else { |
|
$portheader = &mt('Submit Portfolio Files for Grading'); |
|
$porttext = &mt('Indicate the files from your portfolio to be evaluated in grading this task.'); |
|
} |
|
$result.="\n".'<div>'.&Apache::lonhtmlcommon::start_pick_box(). |
&Apache::inputtags::file_selector("$version.0", |
&Apache::inputtags::file_selector("$version.0", |
"bridgetask","*", |
"bridgetask","*", |
'portfolioonly', |
'portfolioonly', |
' |
'<h3>'.$portheader.'</h3><br />'. |
<h2>'.&mt('Submit Portfolio Files for Grading').'</h2> |
$porttext.'<br />'). |
<p>'.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').'</p>'). |
&Apache::lonhtmlcommon::end_pick_box().'</div>'; |
"</table>"; |
|
} |
} |
if (!$previous && $status ne 'SHOW_ANSWER' && |
if (!$previous && $status ne 'SHOW_ANSWER' && |
&show_task($status,$previous)) { |
&show_task($status,$previous)) { |
Line 1090 sub end_Task {
|
Line 1143 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 1126 DONEBUTTON
|
Line 1180 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 1174 DONEBUTTON
|
Line 1230 DONEBUTTON
|
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous |
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous |
&& $status eq 'CAN_ANSWER') { |
&& $status eq 'CAN_ANSWER') { |
my $award='SUBMITTED'; |
my $award='SUBMITTED'; |
|
my $uploadedflag=0; |
|
my $totalsize=0; |
|
my @deletions = &Apache::loncommon::get_env_multiple('form.HWFILE'.$version.'_0_bridgetask_delete'); |
&Apache::essayresponse::file_submission("$version.0",'bridgetask', |
&Apache::essayresponse::file_submission("$version.0",'bridgetask', |
'portfiles',\$award); |
\$award,\$uploadedflag,\$totalsize,\@deletions); |
if ($award eq 'SUBMITTED' && |
if ($award eq 'SUBMITTED' && |
$Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}) { |
$Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}) { |
$Apache::lonhomework::results{"resource.0.tries"}= |
$Apache::lonhomework::results{"resource.0.tries"}= |
Line 1188 DONEBUTTON
|
Line 1247 DONEBUTTON
|
$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 { |
} else { |
delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}); |
unless($uploadedflag) { |
|
delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}); |
|
} |
$award = ''; |
$award = ''; |
} |
} |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
Line 1291 DONEBUTTON
|
Line 1352 DONEBUTTON
|
$Apache::lonhomework::results{"resource.$version.0.solved"}; |
$Apache::lonhomework::results{"resource.$version.0.solved"}; |
} |
} |
&minimize_storage(); |
&minimize_storage(); |
&Apache::structuretags::finalize_storage(); |
my ($canstore,$domain,$name,$symb,$courseid); |
|
($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser(); |
# data stored, now handle queue |
|
if ($review) { |
if ($env{'form.gradingkey'}) { |
if ($env{'form.queue'} eq 'reviewqueue') { |
my $todo=&unescape($env{'form.gradingkey'}); |
&check_queue_unlock($env{'form.queue'}); |
my ($keysymb,$uname,$udom)=&decode_queue_key($todo); |
&Apache::lonxml::debug(" still needs review not changing status."); |
if ($symb eq $keysymb) { |
} else { |
if (($domain eq $udom) && ($name eq $uname)) { |
if ($env{'form.queue'} ne 'none') { |
$canstore = 1; |
&move_between_queues($env{'form.queue'},'reviewqueue'); |
} |
|
} |
|
} |
|
if ($canstore) { |
|
&Apache::structuretags::finalize_storage(); |
|
my @interval = &Apache::lonnet::EXT("resource.0.interval"); |
|
if ($interval[0] =~ /^\d+$/ && $interval[1] eq 'resource') { |
|
my $key=$courseid."\0".$symb; |
|
my %times=&Apache::lonnet::get('firstaccesstimes', |
|
[$key],$domain,$name); |
|
if ($times{$key}) { |
|
my $delresult.=&Apache::lonnet::del('firstaccesstimes', |
|
[$key],$domain,$name); |
|
} |
|
} |
|
# data stored, now handle queue |
|
if ($review) { |
|
if ($env{'form.queue'} eq 'reviewqueue') { |
|
&check_queue_unlock($env{'form.queue'}); |
|
&Apache::lonxml::debug(" still needs review not changing status."); |
} else { |
} else { |
&add_to_queue('reviewqueue',\%queue_data); |
if ($env{'form.queue'} ne 'none') { |
|
&move_between_queues($env{'form.queue'},'reviewqueue'); |
|
} else { |
|
&add_to_queue('reviewqueue',\%queue_data); |
|
} |
} |
} |
} |
} elsif ($ungraded) { |
} elsif ($ungraded) { |
if ($env{'form.queue'} eq 'reviewqueue') { |
if ($env{'form.queue'} eq 'reviewqueue') { |
&Apache::lonxml::debug("moving back."); |
&Apache::lonxml::debug("moving back."); |
&move_between_queues($env{'form.queue'}, |
&move_between_queues($env{'form.queue'}, |
'gradingqueue'); |
'gradingqueue'); |
} elsif ($env{'form.queue'} eq 'none' ) { |
} elsif ($env{'form.queue'} eq 'none' ) { |
&add_to_queue('gradingqueue',\%queue_data); |
&add_to_queue('gradingqueue',\%queue_data); |
} else { |
} else { |
&check_queue_unlock($env{'form.queue'}); |
&check_queue_unlock($env{'form.queue'}); |
} |
} |
} elsif ($mandatory_failed) { |
} elsif ($mandatory_failed) { |
&remove_from_queue($env{'form.queue'}); |
&remove_from_queue($env{'form.queue'}); |
} else { |
} else { |
&remove_from_queue($env{'form.queue'}); |
&remove_from_queue($env{'form.queue'}); |
} |
} |
} else { |
} |
&check_queue_unlock($env{'form.queue'}); |
|
$env{'form.terminated'} = $name.':'.$domain; |
|
} |
|
} |
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 1378 DONEBUTTON
|
Line 1465 DONEBUTTON
|
} |
} |
&Apache::structuretags::reset_problem_globals('Task'); |
&Apache::structuretags::reset_problem_globals('Task'); |
undef($Apache::lonhomework::parsing_a_task); |
undef($Apache::lonhomework::parsing_a_task); |
|
if ( ($target eq 'grade' && $env{'form.webgrade'}) || |
|
$target eq 'webgrade') { |
|
delete($env{'form.grade_symb'}); |
|
delete($env{'form.grade_domain'}); |
|
delete($env{'form.grade_username'}); |
|
delete($env{'form.grade_courseid'}); |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 1561 sub show_queue {
|
Line 1655 sub show_queue {
|
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 1579 sub show_queue {
|
Line 1675 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; |
Line 1596 sub show_queue {
|
Line 1692 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); |
Line 1644 sub show_queue {
|
Line 1740 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 1679 FORM
|
Line 1775 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"; |
Line 2034 sub select_user {
|
Line 2132 sub select_user {
|
|
|
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 2071 sub select_user {
|
Line 2171 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 2079 sub select_user {
|
Line 2180 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> Sec: $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()]</td> |
<td>$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()] <tt>($student)</tt> Sec: $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()]</td> |
Line 2432 sub end_Dimension {
|
Line 2533 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 2634 sub question_status_message {
|
Line 2739 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 2973 sub layout_webgrade_Criteria {
|
Line 3073 sub layout_webgrade_Criteria {
|
my $link=&link($id); |
my $link=&link($id); |
my $version = &get_version(); |
my $version = &get_version(); |
my $status = &get_criteria('status',$version,$dim,$id); |
my $status = &get_criteria('status',$version,$dim,$id); |
my %lt = ( 'ungraded' => 'Ungraded', |
my %lt = &Apache::lonlocal::texthash( |
'fail' => 'Fail', |
'ungraded' => 'Ungraded', |
'pass' => 'Pass', |
'fail' => 'Fail', |
'review' => 'Review', |
'pass' => 'Pass', |
'comment' => 'Additional Comment for Student', |
'review' => 'Review', |
); |
'comment' => 'Additional Comment for Student', |
%lt = &Apache::lonlocal::texthash(%lt); |
); |
my $comment = &get_criteria('comment',$version,$dim,$id); |
my $comment = &get_criteria('comment',$version,$dim,$id); |
$comment = &HTML::Entities::encode($comment,'<>"&'); |
$comment = &HTML::Entities::encode($comment,'<>"&'); |
my %checked; |
my %checked; |
foreach my $which ('ungraded','fail','pass','review') { |
foreach my $which ('ungraded','fail','pass','review') { |
if ($status eq $which) { $checked{$which} = 'checked="checked"'; } |
if ($status eq $which) { $checked{$which} = ' checked="checked"'; } |
} |
} |
if (!%checked) { $checked{'ungraded'} = 'checked="checked"'; } |
if (!%checked) { $checked{'ungraded'} = ' checked="checked"'; } |
my $buttons; |
my $buttons; |
foreach my $which ('ungraded','fail','pass','review') { |
foreach my $which ('ungraded','fail','pass','review') { |
$buttons .= <<END_BUTTON; |
$buttons .= <<END_BUTTON; |
<label class="LC_GRADING_$which"> |
<label class="LC_GRADING_$which"> |
<input type="radio" name="HWVAL_$link" value="$which" $checked{$which} /> |
<input type="radio" name="HWVAL_$link" value="$which"$checked{$which} /> |
$lt{$which} |
$lt{$which} |
</label> |
</label> |
END_BUTTON |
END_BUTTON |
Line 3118 sub proctor_validation_screen {
|
Line 3218 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/Employee 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; |
} |
} |
|
|