--- loncom/homework/bridgetask.pm 2006/06/20 03:33:55 1.174
+++ loncom/homework/bridgetask.pm 2006/11/06 16:03:45 1.184.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.174 2006/06/20 03:33:55 albertel Exp $
+# $Id: bridgetask.pm,v 1.184.2.1 2006/11/06 16:03:45 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -50,7 +50,7 @@ my %dimension;
sub initialize_bridgetask {
# id of current Dimension, 0 means that no dimension is current
# (inside only)
- %Apache::bridgetask::dimension=();
+ @Apache::bridgetask::dimension=();
# list of all Dimension ids seen
%Apache::bridgetask::top_dimensionlist=();
# list of all current Instance ids
@@ -83,12 +83,7 @@ sub proctor_check_auth {
}
}
if ($authenticated) {
- my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
- if ( $useslots eq 'map_map') {
- &checkin_resource($user,$domain,$slot_name);
- } else {
- &create_new_version($type,$user,$domain,$slot_name);
- }
+ &check_in($type,$user,$domain,$slot_name);
return 1;
}
}
@@ -112,7 +107,8 @@ sub check_in_sequence {
my $navmap = Apache::lonnavmaps::navmap->new();
my ($symb) = &Apache::lonxml::whichuser();
my ($map) = &Apache::lonnet::decode_symb($symb);
- my @resources = $navmap->retrieveResources($map,undef,1,0);
+ my @resources =
+ $navmap->retrieveResources($map, sub { $_[0]->is_problem() },0,0);
my %old_history = %Apache::lonhomework::history;
my %old_results = %Apache::lonhomework::results;
@@ -148,7 +144,7 @@ sub create_new_version {
#setup new version and who did it
$Apache::lonhomework::results{'resource.0.version'}=$version;
$id = "$version.0";
- if (!defined($user) || defined($domain)) {
+ if (!defined($user) || !defined($domain)) {
$user = $env{'user.name'};
$domain = $env{'user.domain'};
}
@@ -156,11 +152,14 @@ sub create_new_version {
} elsif ($type eq 'problem') {
&Apache::lonxml::debug("authed $slot_name");
}
-
- if (defined($user) && defined($domain)) {
- $Apache::lonhomework::results{"resource.$id.checkedin"}=
- $user.':'.$domain;
+ if (!defined($user) || !defined($domain)) {
+ $user = $env{'user.name'};
+ $domain = $env{'user.domain'};
}
+
+ $Apache::lonhomework::results{"resource.$id.checkedin"}=
+ $user.':'.$domain;
+
if (defined($slot_name)) {
$Apache::lonhomework::results{"resource.$id.checkedin.slot"}=
$slot_name;
@@ -376,6 +375,8 @@ sub nested_parse {
@Apache::scripttag::parser_env = @old_env;
if ($args->{'delayed_dim_results'}) {
my $dim = &get_dim_id();
+ &Apache::lonxml::debug(" tossing out $result ");
+ &Apache::lonxml::debug(" usining out $dim 's ". $dimension{$dim}{'result'});
return $dimension{$dim}{'result'};
}
return $result;
@@ -391,8 +392,10 @@ sub submission_time_stamp {
my $submissiontime;
my $version=$Apache::lonhomework::history{'resource.0.version'};
for (my $v=$Apache::lonhomework::history{'version'};$v>0;$v--) {
- if (defined($Apache::lonhomework::history{$v.':resource.'.$version.'.0.bridgetask.portfiles'})) {
+ if (defined($Apache::lonhomework::history{$v.':resource.'.$version.'.0.bridgetask.portfiles'})
+ && defined($Apache::lonhomework::history{$v.':resource.'.$version.'.0.tries'})) {
$submissiontime=$Apache::lonhomework::history{$v.':timestamp'};
+ last;
}
}
my $result;
@@ -403,16 +406,18 @@ sub submission_time_stamp {
my ($color,$when)=('#FF6666','after');
if ($diff > 0) { ($color,$when)=('#336600','before'); }
my $info;
+ $diff = abs($diff);
if ($diff%60) { $info=($diff%60).' seconds'; }
$diff=int($diff/60);
if ($diff%60) { $info=($diff%60).' minutes '.$info; }
$diff=int($diff/60);
if ($diff) { $info=$diff.' hours '.$info; }
$result='
'.
- &mt('Student submitted [_1] [_2] the deadline.
- (Submission was at [_3], end of period was [_4].)',
- $info,$when,scalar(localtime($submissiontime)),
- scalar(localtime($slot{'endtime'}))).
+ &mt('Student submitted [_1] [_2] the deadline. '.
+ '(Submission was at [_3], end of period was [_4].)',
+ $info,$when,
+ &Apache::lonlocal::locallocaltime($submissiontime),
+ &Apache::lonlocal::locallocaltime($slot{'endtime'})).
'
';
}
return $result;
@@ -534,8 +539,8 @@ sub start_Task {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my ($status,$accessmsg,$slot);
+ &Apache::structuretags::init_problem_globals('Task');
if ($target ne 'webgrade') {
- &Apache::structuretags::init_problem_globals('Task');
&Apache::structuretags::initialize_storage();
&Apache::lonhomework::showhash(%Apache::lonhomework::history);
if ($env{'request.state'} eq 'construct') {
@@ -598,7 +603,7 @@ sub start_Task {
($status,$accessmsg,my $slot_name,$slot) =
&Apache::lonhomework::check_slot_access('0','Task');
if ($status eq 'CAN_ANSWER' && $version eq '') {
- # CAN_ANSWR mode, and no current version, unproctored access
+ # CAN_ANSWER mode, and no current version, unproctored access
# thus self-checkedin
&check_in('Task',undef,undef,$slot_name);
&add_to_queue('gradingqueue',{'type' => 'Task',
@@ -1062,6 +1067,17 @@ DONEBUTTON
&Apache::loncommon::end_page({'discussion' => 1});
}
}
+
+ my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
+ my %queue_data = ('type' => 'Task',
+ 'time' => time,);
+ if (defined($Apache::inputtags::slot_name)) {
+ $queue_data{'slot'} = $Apache::inputtags::slot_name;
+ } elsif (defined($Apache::lonhomework::history{"resource.$version.0.checkedin.slot"})) {
+ $queue_data{'slot'} = $Apache::lonhomework::history{"resource.$version.0.checkedin.slot"};
+ }
+
+
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) {
my $award='SUBMITTED';
&Apache::essayresponse::file_submission("$version.0",'bridgetask',
@@ -1084,20 +1100,8 @@ DONEBUTTON
&Apache::lonhomework::showhash(%Apache::lonhomework::results);
&Apache::structuretags::finalize_storage();
if ($award eq 'SUBMITTED') {
- my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
- if ($useslots =~ /^\s*no\s*$/i) {
- &add_to_queue('gradingqueue',
- {'type' => 'Task',
- 'time' => time});
- } elsif (defined($Apache::inputtags::slot_name)) {
- &add_to_queue('gradingqueue',
- {'type' => 'Task',
- 'time' => time,
- 'slot' => $Apache::inputtags::slot_name});
- }
+ &add_to_queue('gradingqueue',\%queue_data);
}
- } elsif ($Apache::lonhomework::results{'INTERNAL_store'}) {
- &Apache::structuretags::finalize_storage();
}
if ($target eq 'grade' && $env{'form.webgrade'} eq 'yes'
&& exists($env{'form.cancel'})) {
@@ -1142,14 +1146,20 @@ DONEBUTTON
&check_queue_unlock($env{'form.queue'});
&Apache::lonxml::debug(" still needs review not changing status.");
} else {
- &move_between_queues($env{'form.queue'},'reviewqueue');
+ if ($env{'form.queue'} ne 'none') {
+ &move_between_queues($env{'form.queue'},'reviewqueue');
+ } else {
+ &add_to_queue('reviewqueue',\%queue_data);
+ }
}
} elsif ($ungraded) {
$Apache::lonhomework::results{"resource.$version.0.status"}='ungraded';
- if ($env{'form.queue'} eq 'reviewqueue' ||
- $env{'form.queue'} eq 'none' ) {
+ if ($env{'form.queue'} eq 'reviewqueue') {
&Apache::lonxml::debug("moving back.");
- &move_between_queues($env{'form.queue'},'gradingqueue');
+ &move_between_queues($env{'form.queue'},
+ 'gradingqueue');
+ } elsif ($env{'form.queue'} eq 'none' ) {
+ &add_to_queue('gradingqueue',\%queue_data);
} else {
&check_queue_unlock($env{'form.queue'});
}
@@ -1202,6 +1212,10 @@ DONEBUTTON
&minimize_storage();
&Apache::structuretags::finalize_storage();
}
+ if (exists($Apache::lonhomework::results{'INTERNAL_store'})) {
+ # instance generation occured and hasn't yet been stored
+ &Apache::structuretags::finalize_storage();
+ }
} elsif ($target eq 'webgrade') {
$result.="";
#$result.=''.$status_display.'
';
- if ($comment) {
+ if ($comment =~ /\w/) {
$result.='
'.
&mt('Comment: [_1]',$comment).'
';
}
@@ -2224,8 +2243,8 @@ sub get_criteria {
&nested_parse(\$dimension{$dim}{$instance.'.text'},[@_]);
$result.=
&nested_parse(\$dimension{$dim}{'questiontext'},[@_],
- {'set_dim_id' => undef,
- 'delay_dim_results' => 1});
+ {'set_dim_id' => undef,
+ 'delayed_dim_results' => 1});
foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}},
@{$dimension{$dim}{'criterias'}} ) {
my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
@@ -2262,7 +2281,7 @@ sub get_criteria {
$result.=&grading_history($version,$dim,$id);
$last_link=$link;
}
- if (&delay_result()) {
+ if (&nest()) {
&Apache::lonxml::debug(" for $dim stashing results into ".$dimension{$dim}{'nested'});
$dimension{$dimension{$dim}{'nested'}}{'result'}.=$result;
undef($result);