[prev in list] [next in list] [prev in thread] [next in thread]
List: lon-capa-cvs
Subject: [LON-CAPA-cvs] cvs: loncom /homework structuretags.pm
From: raeburn <raeburn () source ! lon-capa ! org>
Date: 2017-12-22 1:55:29
Message-ID: cvsraeburn1513907729 () cvsserver
[Download RAW message or body]
This is a MIME encoded message
raeburn Fri Dec 22 01:55:29 2017 EDT
Modified files:
/loncom/homework structuretags.pm
Log:
- Code in &start_problem() used to (a) display message depending on access
status of a problem which uses slots, (b) display the web form for
proctor validation, (c) check a user into a slot without proctor
validation, is moved to three separate routines to faciltate re-use:
&access_status_msg(), &checkin_prompt(), and &selfcheckin_resource().
["raeburn-20171222015529.txt" (text/plain)]
Index: loncom/homework/structuretags.pm
diff -u loncom/homework/structuretags.pm:1.556 loncom/homework/structuretags.pm:1.557
--- loncom/homework/structuretags.pm:1.556 Wed Nov 8 00:34:41 2017
+++ loncom/homework/structuretags.pm Fri Dec 22 01:55:28 2017
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.556 2017/11/08 00:34:41 raeburn Exp $
+# $Id: structuretags.pm,v 1.557 2017/12/22 01:55:28 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1355,6 +1355,107 @@
}
}
+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 {
my %lt=&Apache::lonlocal::texthash(
'resource'=>'The resource needs to be checked out',
@@ -1675,99 +1776,17 @@
( $status eq 'NEED_DIFFERENT_IP')) {
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser,
$style);
- if ( $target eq "web" ) {
- 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 \
";
- }
- }
+ $result .= \
&access_status_msg('problem',$status,$symb,$target,$ipused,$accessmsg); } elsif \
($status eq 'NEEDS_CHECKIN') { my \
$bodytext=&Apache::lonxml::get_all_text("/problem",$parser, $style);
- if ($target eq 'web') {
- $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';
- }
- }
+ $result .= &checkin_prompt($target,$slot_name,$slot,'problem');
} elsif ($target eq 'web') {
if ($status eq 'CAN_ANSWER') {
$resource_due = &Apache::lonhomework::due_date(0, \
$env{'request.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: $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'};
- }
- }
- }
+ $resource_due = \
&selfcheckin_resource($resource_due,$slot_name,$slot, + \
$env{'request.symb'}); }
if ($resource_due) {
my $time_left = $resource_due - time();
@@ -1811,8 +1830,6 @@
} elsif ($target eq 'tex') {
$result .= 'INSERTTEXFRONTMATTERHERE';
$result .= &select_metadata_hyphenation();
-
-
}
} elsif ($target eq 'edit') {
$result .= $form_tag_start.&problem_edit_header();
_______________________________________________
LON-CAPA-cvs mailing list
LON-CAPA-cvs@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic