version 1.555, 2017/07/02 16:50:30
|
version 1.559, 2018/03/30 23:50:13
|
Line 1355 sub store_aggregates {
|
Line 1355 sub store_aggregates {
|
} |
} |
} |
} |
|
|
|
sub access_status_msg { |
|
my ($mode,$status,$symb,$target,$ipused,$accessmsg) = @_; |
|
my $msg; |
|
if ($target eq 'web') { |
|
if ($status eq 'UNAVAILABLE') { |
|
$msg.='<p class="LC_error">'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</p>'; |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.='<p class="LC_warning">'.&mt('You are not currently signed up to work at this time and/or place.').'</p>'; |
|
} elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || |
|
($status eq 'NOTRESERVABLE')) { |
|
$msg.='<p class="LC_warning">'.&mt('Access requires reservation to work at specific time/place.').'</p>'; |
|
} elsif ($status ne 'NOT_YET_VIEWED') { |
|
$msg.='<p class="LC_warning">'.&mt('Not open to be viewed').'</p>'; |
|
} |
|
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
|
$msg.=&mt('The problem ').$accessmsg; |
|
} elsif ($status eq 'UNCHECKEDOUT') { |
|
$msg.=&checkout_msg(); |
|
} elsif ($status eq 'NOT_YET_VIEWED') { |
|
$msg.=&firstaccess_msg($accessmsg,$symb); |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE') { |
|
$msg.=&mt('Available to make a reservation.').' '.&mt('Reservation window closes [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'end')). |
|
'<br />'. |
|
&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE_LATER') { |
|
$msg.=&mt('Window to make a reservation will open [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'start')); |
|
} elsif ($status eq 'NOTRESERVABLE') { |
|
$msg.=&mt('Not available to make a reservation.'); |
|
} elsif ($status eq 'NEED_DIFFERENT_IP') { |
|
if ($ipused) { |
|
$msg.=&mt('You must use the same computer ([_1]) you used when you first accessed this resource using your time/place-based reservation.',"IP: $ipused"); |
|
} else { |
|
$msg.=&mt('Each student must use a different computer to access this resource at this time and/or place.').'<br />'. |
|
&mt('Somebody else has already used this particular computer for that purpose.'); |
|
} |
|
} |
|
$msg.='<br />'; |
|
} elsif ($target eq 'tex') { |
|
my $startminipage = ($env{'form.problem_split'}=~/yes/i)? '' |
|
: '\begin{minipage}{\textwidth}'; |
|
|
|
$msg ='\noindent \vskip 1 mm '. |
|
$startminipage.'\vskip 0 mm'; |
|
if ($status eq 'UNAVAILABLE') { |
|
$msg.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'\vskip 0 mm '; |
|
} else { |
|
$msg.=&mt('Problem is not open to be viewed. It')." $accessmsg \\vskip 0 mm "; |
|
} |
|
} |
|
return $msg; |
|
} |
|
|
|
sub checkin_prompt { |
|
my ($target,$slot_name,$slot,$type) = @_; |
|
my $result; |
|
if ($target eq 'web') { |
|
$result = &Apache::bridgetask::proctor_validation_screen($slot); |
|
} elsif ($target eq 'grade') { |
|
if (!&Apache::bridgetask::proctor_check_auth($slot_name,$slot,$type)) { |
|
$result = &mt('An error occurred during check-in'); |
|
} |
|
} |
|
return $result; |
|
} |
|
|
|
sub selfcheckin_resource { |
|
my ($resource_due,$slot_name,$slot,$symb) = @_; |
|
if ($slot_name ne '') { |
|
my $checked_in = |
|
$Apache::lonhomework::history{'resource.0.checkedin'}; |
|
if ($checked_in eq '') { |
|
# unproctored slot access, self checkin |
|
my $needsiptied; |
|
if (ref($slot)) { |
|
$needsiptied = $slot->{'iptied'}; |
|
} |
|
my $check = &Apache::bridgetask::check_in('problem',undef,undef, |
|
$slot_name,$needsiptied); |
|
if ($check =~ /^error: /) { |
|
&Apache::lonnet::logthis("Error during self-checkin of problem (symb: $symb) using slot: $slot_name"); |
|
} else { |
|
$checked_in = $Apache::lonhomework::results{"resource.0.checkedin"}; |
|
} |
|
} |
|
if ((ref($slot) eq 'HASH') && ($checked_in ne '')) { |
|
if ($slot->{'starttime'} < time()) { |
|
if (!$resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} elsif ($slot->{'endtime'} < $resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} |
|
} |
|
} |
|
} |
|
return $resource_due; |
|
} |
|
|
sub checkout_msg { |
sub checkout_msg { |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'resource'=>'The resource needs to be checked out', |
'resource'=>'The resource needs to be checked out', |
Line 1675 sub start_problem {
|
Line 1776 sub start_problem {
|
( $status eq 'NEED_DIFFERENT_IP')) { |
( $status eq 'NEED_DIFFERENT_IP')) { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
if ( $target eq "web" ) { |
$result .= &access_status_msg('problem',$status,$symb,$target,$ipused,$accessmsg); |
my $msg; |
|
if ($status eq 'UNAVAILABLE') { |
|
$msg.='<p class="LC_error">'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</p>'; |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.='<p class="LC_warning">'.&mt('You are not currently signed up to work at this time and/or place.').'</p>'; |
|
} elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || |
|
($status eq 'NOTRESERVABLE')) { |
|
$msg.='<p class="LC_warning">'.&mt('Access requires reservation to work at specific time/place.').'</p>'; |
|
} elsif ($status ne 'NOT_YET_VIEWED') { |
|
$msg.='<p class="LC_warning">'.&mt('Not open to be viewed').'</p>'; |
|
} |
|
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
|
$msg.=&mt('The problem ').$accessmsg; |
|
} elsif ($status eq 'UNCHECKEDOUT') { |
|
$msg.=&checkout_msg(); |
|
} elsif ($status eq 'NOT_YET_VIEWED') { |
|
$msg.=&firstaccess_msg($accessmsg,$symb); |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE') { |
|
$msg.=&mt('Available to make a reservation.').' '.&mt('Reservation window closes [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'end')). |
|
'<br />'. |
|
&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE_LATER') { |
|
$msg.=&mt('Window to make a reservation will open [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'start')); |
|
} elsif ($status eq 'NOTRESERVABLE') { |
|
$msg.=&mt('Not available to make a reservation.'); |
|
} elsif ($status eq 'NEED_DIFFERENT_IP') { |
|
if ($ipused) { |
|
$msg.=&mt('You must use the same computer ([_1]) you used when you first accessed this resource using your time/place-based reservation.',"IP: $ipused"); |
|
} else { |
|
$msg.=&mt('Each student must use a different computer to access this resource at this time and/or place.').'<br />'. |
|
&mt('Somebody else has already used this particular computer for that purpose.'); |
|
} |
|
} |
|
$result.=$msg.'<br />'; |
|
} elsif ($target eq 'tex') { |
|
my $startminipage = ($env{'form.problem_split'}=~/yes/i)? '' |
|
: '\begin{minipage}{\textwidth}'; |
|
$result.='\noindent \vskip 1 mm '. |
|
$startminipage.'\vskip 0 mm'; |
|
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 '; |
|
} else { |
|
$result.=&mt('Problem is not open to be viewed. It')." $accessmsg \\vskip 0 mm "; |
|
} |
|
} |
|
} elsif ($status eq 'NEEDS_CHECKIN') { |
} elsif ($status eq 'NEEDS_CHECKIN') { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
if ($target eq 'web') { |
$result .= &checkin_prompt($target,$slot_name,$slot,'problem'); |
$result .= |
|
&Apache::bridgetask::proctor_validation_screen($slot); |
|
} elsif ($target eq 'grade') { |
|
my $checkinresult = &Apache::bridgetask::proctor_check_auth($slot_name,$slot, |
|
'problem'); |
|
if ($checkinresult = /^error:/) { |
|
$result .= 'error'; |
|
} |
|
} |
|
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
$resource_due = &Apache::lonhomework::due_date(0, $env{'request.symb'}); |
$resource_due = &Apache::lonhomework::due_date(0, $env{'request.symb'}); |
if ($slot_name ne '') { |
if ($slot_name ne '') { |
my $checked_in = |
$resource_due = &selfcheckin_resource($resource_due,$slot_name,$slot, |
$Apache::lonhomework::history{'resource.0.checkedin'}; |
$env{'request.symb'}); |
if ($checked_in eq '') { |
|
# unproctored slot access, self checkin |
|
my $needsiptied; |
|
if (ref($slot)) { |
|
$needsiptied = $slot->{'iptied'}; |
|
} |
|
my $check = &Apache::bridgetask::check_in('problem',undef,undef, |
|
$slot_name,$needsiptied); |
|
if ($check =~ /^error: /) { |
|
&Apache::lonnet::logthis("Error during self-checkin of problem (symb: $env{'request.symb'}) using slot: $slot_name"); |
|
} else { |
|
$checked_in = |
|
$Apache::lonhomework::results{"resource.0.checkedin"}; |
|
} |
|
} |
|
if ((ref($slot) eq 'HASH') && ($checked_in ne '')) { |
|
if ($slot->{'starttime'} < time()) { |
|
if (!$resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} elsif ($slot->{'endtime'} < $resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} |
|
} |
|
} |
|
} |
} |
if ($resource_due) { |
if ($resource_due) { |
my $time_left = $resource_due - time(); |
my $time_left = $resource_due - time(); |
Line 1811 sub start_problem {
|
Line 1830 sub start_problem {
|
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
$result .= &select_metadata_hyphenation(); |
$result .= &select_metadata_hyphenation(); |
|
|
|
|
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result .= $form_tag_start.&problem_edit_header(); |
$result .= $form_tag_start.&problem_edit_header(); |
Line 2040 sub end_problem {
|
Line 2057 sub end_problem {
|
@Apache::inputtags::response=(); |
@Apache::inputtags::response=(); |
$result=&Apache::response::mandatory_part_meta; |
$result=&Apache::response::mandatory_part_meta; |
} |
} |
$result.=&Apache::response::meta_part_order(); |
$result.=&Apache::response::meta_part_order('problem'); |
$result.=&Apache::response::meta_response_order(); |
$result.=&Apache::response::meta_response_order(); |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
&Apache::lonxml::debug("in end_problem with $target, edit"); |
&Apache::lonxml::debug("in end_problem with $target, edit"); |
Line 2117 sub end_library {
|
Line 2134 sub end_library {
|
&& ($#$tagstack eq 0 && $$tagstack[0] eq 'library') |
&& ($#$tagstack eq 0 && $$tagstack[0] eq 'library') |
&& $env{'request.state'} eq "construct") { |
&& $env{'request.state'} eq "construct") { |
$result.='</form>'.&Apache::loncommon::end_page({'discussion' => 1}); |
$result.='</form>'.&Apache::loncommon::end_page({'discussion' => 1}); |
|
} elsif ($target eq 'meta') { |
|
$result.=&Apache::response::meta_part_order('library'); |
|
$result.=&Apache::response::meta_response_order(); |
} |
} |
if ( $#$tagstack eq 0 && $$tagstack[0] eq 'library') { |
if ( $#$tagstack eq 0 && $$tagstack[0] eq 'library') { |
&reset_problem_globals('library'); |
&reset_problem_globals('library'); |
Line 3147 sub end_simpleeditbutton {
|
Line 3167 sub end_simpleeditbutton {
|
} |
} |
|
|
sub practice_problem_header { |
sub practice_problem_header { |
return '<span class="LC_info"><h3>'.&mt('Practice Problem').'</h3></span>'. |
return '<h3 class="LC_info">'.&mt('Practice Problem').'</h3>'. |
'<span class="LC_info">'.&mt('Submissions are not permanently recorded'). |
'<span class="LC_info">'.&mt('Submissions are not permanently recorded'). |
'</span>'; |
'</span>'; |
} |
} |
Line 3173 sub randomizetry_problem_header {
|
Line 3193 sub randomizetry_problem_header {
|
$text = &mt('A new variation will be generated after each try until correct or tries limit is reached.'); |
$text = &mt('A new variation will be generated after each try until correct or tries limit is reached.'); |
} |
} |
} |
} |
return '<span class="LC_info"><h3>'.$header.'</h3></span>'. |
return '<h3 class="LC_info">'.$header.'</h3>'. |
'<span class="LC_info">'.$text.'</span><hr />'; |
'<span class="LC_info">'.$text.'</span><hr />'; |
} |
} |
|
|
Line 3204 sub randomizetry_part_header {
|
Line 3224 sub randomizetry_part_header {
|
if ($num > 1) { |
if ($num > 1) { |
$output .= '<hr />'; |
$output .= '<hr />'; |
} |
} |
$output .= '<span class="LC_info"><h4>'.$header.'</h4></span>'. |
$output .= '<h4 class="LC_info">'.$header.'</h4>'. |
'<span class="LC_info">'.$text.'</span><br /><br />'; |
'<span class="LC_info">'.$text.'</span><br /><br />'; |
return $output; |
return $output; |
} |
} |