--- loncom/homework/structuretags.pm 2015/04/21 12:28:05 1.536
+++ loncom/homework/structuretags.pm 2015/12/03 20:40:27 1.541
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.536 2015/04/21 12:28:05 raeburn Exp $
+# $Id: structuretags.pm,v 1.541 2015/12/03 20:40:27 damieng Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -490,7 +490,9 @@ sub page_start {
}
}
if ($needs_upload) {
- $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js();
+ $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js()
+ .'';
}
}
@@ -974,6 +976,13 @@ $show_all
'onclick="javascript:setmode(this.form,'."'edit'".')" />';
$result .= '';
+ if ($env{'browser.type'} ne 'explorer' || $env{'browser.version'} > 9) {
+ my $uri = $env{'request.uri'};
+ my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&file=/daxeopen'.$uri.
+ '&save=/daxesave';
+ $result .= '';
+ }
$result.='
@@ -1276,8 +1285,8 @@ sub store_aggregates {
} else {
$anoncounter{$symb."\0".$part} = 1;
}
- my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}};
- if ($needsrelease) {
+ my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}.':'};
+ if ($needsrelease) {
my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'};
if ($curr_required eq '') {
&Apache::lonnet::update_released_required($needsrelease);
@@ -1508,6 +1517,7 @@ sub start_problem {
my $status;
my $accessmsg;
my $resource_due;
+ my $ipused;
my $name= &get_resource_name($parstack,$safeeval);
my ($result,$form_tag_start,$slot_name,$slot,$probpartlist);
@@ -1516,10 +1526,11 @@ sub start_problem {
$target eq 'tex') {
if ($env{'form.markaccess'}) {
my @interval=&Apache::lonnet::EXT("resource.0.interval");
- &Apache::lonnet::set_first_access($interval[1],$interval[0]);
+ my ($timelimit) = split(/_/,$interval[0]);
+ &Apache::lonnet::set_first_access($interval[1],$timelimit);
}
- ($status,$accessmsg,$slot_name,$slot) =
+ ($status,$accessmsg,$slot_name,$slot,$ipused) =
&Apache::lonhomework::check_slot_access('0','problem');
push (@Apache::inputtags::status,$status);
}
@@ -1610,7 +1621,8 @@ sub start_problem {
( $status eq 'NOTRESERVABLE') ||
( $status eq 'RESERVABLE') ||
( $status eq 'RESERVABLE_LATER') ||
- ( $status eq 'INVALID_ACCESS')) {
+ ( $status eq 'INVALID_ACCESS') ||
+ ( $status eq 'NEED_DIFFERENT_IP')) {
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser,
$style);
if ( $target eq "web" ) {
@@ -1643,7 +1655,14 @@ sub start_problem {
&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.').'
'.
+ &mt('Somebody else has already used this particular computer for that purpose.');
+ }
+ }
$result.=$msg.'
';
} elsif ($target eq 'tex') {
my $startminipage = ($env{'form.problem_split'}=~/yes/i)? ''
@@ -1663,8 +1682,11 @@ sub start_problem {
$result .=
&Apache::bridgetask::proctor_validation_screen($slot);
} elsif ($target eq 'grade') {
- &Apache::bridgetask::proctor_check_auth($slot_name,$slot,
- 'problem');
+ my $checkinresult = &Apache::bridgetask::proctor_check_auth($slot_name,$slot,
+ 'problem');
+ if ($checkinresult = /^error:/) {
+ $result .= 'error';
+ }
}
} elsif ($target eq 'web') {
if ($status eq 'CAN_ANSWER') {
@@ -1674,10 +1696,18 @@ sub start_problem {
$Apache::lonhomework::history{'resource.0.checkedin'};
if ($checked_in eq '') {
# unproctored slot access, self checkin
- &Apache::bridgetask::check_in('problem',undef,undef,
- $slot_name);
- $checked_in =
- $Apache::lonhomework::results{"resource.0.checkedin"};
+ 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()) {